본문 바로가기

전체 글49

Session, TCP, RSA, RFC, JWT 세션 처음 서버에 Get 으로 요청을 하면, 서버는 header 에 세션ID 를 담아서 웹 브라우저에 다시 리턴해준다. 다시 한번 Get 으로 요청하는 경우, 갖고 있는 세션 ID 를 함께 서버에 전송해준다. 세션 ID 란 무엇인가? 1. 세션 ID 를 이용해서 최초 방문이 아니라는 것을 확인해주기 위함. 2. 서버가 ID를 발급해준 사용자가 맞는지 확인해주기 위함. 세션 ID 가 사라지는 경우 : 1. 서버에서 세션을 삭제하는 경우. 2. 사용자가 브라우저를 종료한 경우. 3. 서버에서 특정 시간이 지나면 사라짐. 세션은 로그인 요청(인증) 하는 경우에 많이 사용 된다. 세션의 동작 방식 1. 서버에 응답요청을 보냄 2. 서버에서 세션ID를 생성함 3. 세션ID 를 담아서 클라이언트에게 보내줌 4. 클.. 2022. 8. 2.
스프링 게시판 만들기 - 8 (2) (소셜 로그인 [구글,네이버,카카오,페이스북] ) 스프링 게시판 만들기 - 8 (1) 편과 이어지는 내용입니다. 각각의 개발자 센터에 들어가서 클라이언트 Id 와 비밀번호를 받았다는 가정하에 진행합니다! 구글 CustomOAuth2MemberService.java package toyproject.board.config.auth; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org... 2022. 8. 2.
스프링 게시판 만들기 - 8 (1) (소셜 로그인 [구글,네이버,카카오,페이스북] ) 이번에는 최근 여러 웹사이트에서 흔히 볼 수 있는 소셜 로그인을 구현해 볼까 한다. 게시판 기능을 좀 더 많이 구현해보고 이쁘게 꾸미고, 코드 리팩토링도 해보고.. 하려고 했는데 현재 진행중인 한이음 대외활동에서 소셜 로그인을 이용해서 구현을 해보고자 했기에 우선 토이프로젝트로 진행중이였던 게시판에서 구현을 해보고 대외활동 프로젝트에 적용해보려 한다!.. 각 소셜 서비스 등록 소셜 로그인을 구현하기 위해서는 각 플랫폼마다 존재하는 OAuth 서비스를 이용해서 등록해야 한다! 구글 새로운 프로젝트를 하나 만들고, OAuth 동의 화면으로 이동해서 외부를 선택해준다. 위의 정보를 작성하고, 하단에 개발자 연락처를 추가하고 다음으로 넘어간다. 범위 추가 또는 삭제 클릭 -> 상위 두개를 선택 후 업데이트 버튼.. 2022. 8. 1.
스프링 게시판 만들기 - 7 (2) (동시성 feat.ThreadLocal) 한동안 손을 떼고 있던 토이프로젝트(게시판 만들기)를 간간히 봐주시는 분들이 계시는데 조회수 관련해서 동시성은 고려하신거냐고 묻는 댓글을 보고 음.. 동시성?.. 바로 이전 학기에 네트워크프로그래밍과 운영체제를 들어서 아 동기화 문제구나 하고 깨닫고 답글을 달아드리려 하는데 명확히 답할수가 없어서(& 잘못된 답변을 달아드려서) 해당 부분에 대해서 정리해보고자 한다. 동시성 동시성 문제란 멀티 쓰레드 환경에서 나타나는 문제이다. 예를 들면, 내가 1번 게시글을 조회한다고 할 때 싱글 스레드라면 문제되지 않는다. 하나의 스레드에서 작업이 끝난 후에야 다음 작업이 실행되기 때문에 조회수가 정확하게 계산될 것이다. 반면, 멀티 쓰레드 환경이라면 문제가 생길 수 있다. A 게시글은 100 의 조회수를 갖고 있다고.. 2022. 7. 13.
FullCalender 리팩토링 & 테스트케이스 -1 드디어 4학년 1학기가 종강을 하고.. 졸업 작품도 점점 막바지를 향해 다가가고 있다. 이번 여름 방학 동안 주요기능 한 두개 정도 구현을 하면 거의 마무리가 되지 않을까 하는 생각이다. 사실 지금 짠 코드들은 좀 문제가 많다.. 오류가 나더라도 어디서 왜 오류가 났는지 알 수 없는 오류도 간혹 발생하고, Optional 에 대한 개념도 없이 비싼 리소스를 단지 .get() 을 통해서 불러오는 안좋은 사용법이라던가.. JPA 에서도 그저 기본 기능을 이용하려고 findBy~~~~ 가 엄청 길어지는 문제라거나.. 결정적으로 제대로 된 테스트 케이스도 작성하지 않았다. 처음에는 TDD (테스트주도개발) 방법론을 사용해서 테스트 코드를 많이 작성해야지!.. 하는 생각이였지만 기능 개발도 진행하며 학교 수업도 .. 2022. 6. 26.
MSA (Microservice Architecture) MSA 란 ? Monolithic Architecture 의 경우, 애플리케이션이 구동되기 위한 UI , 비즈니스 레이어 등이 하나의 큰 덩어리로 같이 구성이 되는 것. MSA 의 경우, 애플리케이션의 각각의 서비스를 MicroService 라는 단위로 쪼개어서 나눈 것. 위의 간단한 예시를 통해, MSA 와 Monolithic Architecture 의 차이를 구별할 수 있다. API 를 통해 관리하고, 외부에서 호출하는 경우 Service 자체를 노출하는 것이 아닌 API Gateway 를 통해서 인증을 하고, API 정책을 가져갈 수 있도록 하고, 데이터베이스 또한 각각의 서비스가 고유의 데이터베이스를 가질 수 있도록 한다. 그렇다면 MSA 아키텍처는 왜 인기가 있을까 ? 1. 기존의 Monolit.. 2022. 6. 23.