목록CS 지식 (158)
개발놀이터
이번 포스팅에서는 MySQL에서 MySQL로 데이터를 마이그레이션하는 방법에 대해서 포스팅하도록 하겠습니다. 이번 마이그레이션의 특징은 기존 데이터가 완전히 Overwrite 해버리기 때문에 데이터가 존재하는 상태에서 진행하는 마이그레이션은 더 나중에 해봐야할 것 같습니다. 그럼 마이그레이션 시작하도록 하겠습니다. DBeaver로 마이그레이션 먼저 복제하고싶은 데이터베이스를 오른쪽 클릭해서 도구 > Dump database를 클릭합니다. 마이그레이션할 테이블을 선택해야합니다. 디폴트는 모든 테이블이 선택됩니다. 그리고 "다음"을 눌러서 내가 복제할 데이터가 어디에 저장되는지 알아야합니다. 저는 C드라이브에 Users에 user군요. start를 누르면 해당 경로에 sql파일이 있을겁니다. 하지만 에러가 ..
Q. 스프링 시큐리티의 동작 방식에 대해서 설명해주세요. A. 먼저 Proxy Chain Filter가 필터를 만듭니다. 그리고 프록시로 생성된 필터가 request를 인터셉트합니다. 인터셉트한 request로 인증을 진행하고 인증이 끝나면 Security Context를 업데이트합니다. 업데이트함과 동시에 인가가 진행되고 Exception을 핸들링 한 다음 사용자의 요청을 핸들링합니다. Q. 스프링 시큐리티의 인증 방식에 대해서 설명해주세요. A. 먼저 request와 걸맞는 필터가 작동합니다. form 형식의 request는 UsernamePassowrdAuthenticationFilter가 작동하고 OAuth 2.0의 형식은 OAuthLoginAuthenticationFilter가 작동합니다. 그리..
Q. 낙관적 락과 비관적 락에 대해서 설명해주세요. A. 둘 다 데이터에 락을 걸어서 동시성 문제를 해결하는 방법중에 하나입니다. 낙관적 락은 충돌이 빈번하지 않은 경우에 효과적입니다. 낙관적 락은 커밋과정에서 충돌을 감지하여 Exception을 던지는데 이 때 Exception은 OptimisticLockingFailureException입니다. 이 예외를 처리함으로써 동시성 문제를 해결할 수 있습니다. 비관적 락은 충돌이 빈번한 경우에 더 효과적입니다. 비관적 락은 반드시 동시성 문제가 발생한다는 가정을 하고 락을 걸기 때문에 데이터의 정합성이 보장되지만 낙관적 락에 비해 성능이 조금 부족할 수 있습니다.
Q. 비동기 프로그래밍과 Non-blocking (Architecture) 의 차이에 대해서 설명해주세요. A. 동기 / 비동기 프로그래밍은 클라이언트와 서버간에 커뮤니케이션을 할 때 한번 request를 보내면 그에 상응하는 response가 올때까지 기다려야 한다는 것입니다. 반면에 블로킹 / 논블로킹 아키텍처는 여러개의 프로그램 혹은 스레드가 공유된 자원에 접근할 때 같은 자원에 하나의 스레드만 접근할 수 있도록 접근을 막는 것입니다.
이번 포스팅에선 Elasticsearch의 데이터와 MySQL 데이터를 동기화하는 방법에 대해서 포스팅해보도록 하겠습니다. 우선 제가 이 방법이 필요했던 이유는 기존 프로젝트에서 이미 수백개의 데이터가 있는데 이걸 Elasticsearch와 연동시켜야 제가 원하는 검색성능이 나올 것 같아서 알아보게 되었습니다. 마이그레이션 하느라 조금 고생했는데 한번 보시죠! Elasticsearch 마이그레이션 Elasticsearch에서 데이터를 마이그레이션 하는 방법에는 몇가지가 있습니다. 일일이 집어넣기 Logstash 사용하기 go-mysql-elasticsearch 사용하기 저야 수백개가 되는 데이터니까 잘만하면 일일이 집어넣는게 가능하겠지만 현실에선 불가능하겠죠? 또 logstash를 사용하는 방법이 있는데..
이번 포스팅에선 이제 제가 공부하는 스프링에서 사용해봐야죠. 우리는 앞선 포스팅에서 Elassticsearch의 전반적인 내용과 CRUD를 해봤습니다. 스프링에선 Elasticsearch를 어떻게 사용하고있을까요? 한번 알아보죠! 스프링에서 Elasticsearch 사용하기 // elasticsearch implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client' 우선 의존성을 추가해줍니다. ElasticsearchConfig.java package com.hello.capston...
이번 포스팅에선 Elasticsearch 의 테이블 (Elasticsearch에선 Index) 생성과 값을 집어넣고, 읽고, 변경하고, 지우는 방법을 알아보도록 하겠습니다. 우선 Elasticsearch에 대한 전반적인 이해가 있으면 정말 좋습니다. 아래의 링크에서 확인해주세요! https://coding-review.tistory.com/315
https://coding-review.tistory.com/365 Redis를 이용해 캐싱 구현하기 (with Spring) 저번 포스팅에선 Redis의 기본적인 개념에 대해서 알아봤습니다. Redis가 어떻게 NoSQL중에서 가장 빠른 성능을 보여줄 수 있었는지, 자료구조는 어떤 것을 지원하는지, 사용처는 어떤게 있는지, 배 coding-review.tistory.com 우리는 저번 캐싱 구현에서 Spring Data Redis를 적극적으로 활용해 CrudRepository를 상속받아 사용했습니다. 하지만 이 방법은 high level 코딩이었기 때문에 문제가 몇가지 있습니다. 바로 Redis에서 제공해주는 다양한 자료구조 중 Hash 밖에 이용할 수 없다는 것이죠. Redis에선 String, Se..
https://coding-review.tistory.com/346 여태까지 공부한 네트워크 면접질문 / 답변 https://coding-review.tistory.com/345 여태까지 공부한 데이터베이스 면접질문 / 답변 https://coding-review.tistory.com/344 여태까지 공부한 Spring 면접질문 / 답변 https://coding-review.tistory.com/343 여태까지 공부한 Jav coding-review.tistory.com 앞선 포스팅과 이어집니다. 70. 프로스세와 스레드에 대해서 설명해주세요. 프로세스는 컴퓨터가 연속적으로 실행하는 프로그램이고 스레드는 프로세스 안에서 실행되는 흐름의 단위입니다. 프로세스는 고유한 주소와 데이터 공간을 할당받고 독립적..
평소에 인증과 인가에 대해서 자세히 알고있지는 않았습니다. 사실 인가가 뭔지도 잘 몰랐습니다. 이참에 공부를 해야겠다고 생각이 들더군요. 때문에 이번 GPT에게 물어본 내용은 인증과 인가입니다. 거기에 제가 알고있던 부분을 첨가해서 포스팅 작성해보도록 하겠습니다. ※ GPT야 이것좀 알려줘 카테고리는 원래 제가 작성하는 주제 (자바, 스프링, CS, 알고리즘) 와 다른 하지만 평소에 궁금했던 내용을 작성합니다. GPT가 답변한 내용은 ~이다 체로, 제가 작성한 부분은 ~습니다 체로 작성됩니다. 인증과 인가 포스팅을 시작하기 전에 인증과 인가에 대한 정의를 먼저 말씀드리고 가야겠군요. 인증 : 말그대로 신뢰할 수 있는 사용자라고 인증하는 것 인가 : 사용자가 할 수 있는 행위를 제한하는 것 인증과 인가에 ..