본문 바로가기

spring4

OAuth2.0 + JWT를 사용한 토큰 기반 서버 인증 구현하기 토큰 기반 인증 인증받은 사용자들에게 토큰을 발급하여, 서버에 접근할 때 토큰 정보를 함께 보내어 인증을 합니다. 서버에서는 사용자 인증 벙보를 세션으로 가지고 있을 필요가 없기 때문에 Stateless한 구조라고 하며, 서버를 확장하기 용이합니다. 인증에 사용할 OAuth2 Provider Google Naver Kakao 개발 전 준비 사항 OAuth2는 인증서버에서 로그인 후 인증서버에서 우리의 서버로 토큰을 보내주기 위해 Callback url을 등록해주어야 합니다. OAuth2를 제공해주는 개발자 센터에 OAuth2 인증을 사용하기 위한 어플리케이션 등록 합니다. developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카.. 2021. 4. 12.
TDD.. 테스트 코드는 습관이에요! 인터넷에 테스트 코드의 장점을 검색해보면, 안정성을 높인다. side-effect를 줄인다. 마음의 평화가 찾아온다. 등 생산성을 매우 높여준다고 합니다. 하지만 저도 아아 그렇구나 테스트 코드는 좋은거구나.. 하고 신나게 개발만 했습니다. 물론 테스트 했죠. 디버깅하면서 전체 시나리오 테스트를요... 그런데 생각해봅시다. 우리는 소프트웨어라는 제품을 만들고 있는데, 제품을 만들 때 테스트를 안한 부품을 믿고 사용 할 수 있을까요? TDD를 공부하면 만나는 키워드가 있습니다. 그건 바로 F.I.R.S.T인데, F.I.R.S.T 원칙을 지키면서 단위테스트를 작성하면 좋은 테스트를 만들 수 있다고 합니다. 프로그래밍 패러다임은 이런 단어로 뜻 만드는 걸 좋아하는거같아요. SOLID라던가.. ACID라던가.... 2021. 4. 2.
Event를 발행해 느슨한 결합을 가져보자 도메인 모델간에 강한 의존성을 갖게 되면 트랜잭션의 범위가 커지고 시스템이 복잡해지는 경우가 발생합니다. 이를 해결하기 위해 Spring에서는 이벤트를 발행하고 핸들링하는 방법을 제공해줍니다. 시나리오 주문을 하면 주문 완료 Sms를 발송한다. @RequiredArgsConstructor @Service public class OrderService { private final OrderRepository orderRepository; private final SmsClient smsClient; public void placeOrder(OrderRequest orderRequest) { Order order = new Order(orderRequest.getOrderId()); order.place().. 2021. 3. 27.
프로젝트 패키지 구성은 어떻게 하는게 좋을까? 프로젝트를 처음 구성할 때, 패키지를 어떻게 구성해야 할지 많은 고민을 하게 됩니다. 인터넷에 있는 수많은 프로젝트가 있지만 어째서 이 클래스는 이 패키지에 있는 걸까? 라는 명확한 이유를 몰랐고 어떠한 기준으로 패키지를 구성하면 될지 개인적인 생각과 정말 간단한 시나리오로 구상해봤습니다. 예제로 사용될 시나리오는 다음과 같습니다. "사용자는 원하는 제품을 구매 요청 후 결제를 하면 배송이 완료 된다." //마법의 물품 배송;; 코드를 작성하기 전에 먼저 계층형 아키텍쳐에 대해 알아보겠습니다. 계층형 아키텍쳐 Layered Architecture라고 불리며 각 레이어에 특정 관심사와 관련된 객체만을 포함하게 만들어 관심사가 분리된 코드 구성을 목표로 하는 아키텍처입니다. 각 레이어는 밑에 있는 레이어에 .. 2021. 3. 25.