본문 바로가기

분류 전체보기15

전략 패턴(Strategy Pattern) 우아콘2020에서 프론트 서버의 구조를 보던중에 문득 DIP(의존성 역전 원칙)와 관련있는 전략 패턴이 등장하여 다시한번 기억하고자 이 글을 작성합니다. 흔히 우리가 많은 곳에서 쓰고 있지만 디자인 패턴 측면(좀더 이론적인??)에서 접근해보고자 합니다. 추가로 Spring boot 예제도 구현해보겠습니다. 전략 패턴 어느 한 객체가 특정 컴포넌트에 의존하게 되면 후에 해당 객체에 기능이 추가되고 변하게 되었을 때 유연한 대처(소스코드 변경 및 컴포넌트 변경 대처 등)를 하기가 어렵습니다. 다음은 특정 컴포넌트 A에 의존적인 객체(Context)를 나타냅니다. 이러한 문제를 해결하기 위해 다음과 같이 특정 컴포넌트들의 의존성을 역전시킨 전략패턴을 사용할 수 있습니다. 위 그림과 같이 전략 패턴은 추상화 계.. 2021. 6. 24.
Kafka(이벤트 브로커) vs RabbitMQ(메시지 브로커) 개요 kafka와 rabbitmq 모두 pub/sub 기반의 메시지 큐 서비스를 제공합니다. 기존에는 rabbitmq보다 kafka에서 더 많은 기능 지원을 한다 정도만 알고 있었는데요. 이벤트 기반 MSA를 공부하면서 kafka와 rabbitmq에 대해서 조금은 더 자세히 알게되어 그 차이점에 대해서 간략하게 기록합니다. 메시지 브로커 메시지 브로커는 publisher가 생산한 메시지를 메시지 큐에 저장하고, 저장된 데이터를 consumer가 가져갈 수 있도록 중간 다리 역할을 해주는 브로커(broker)라고 볼 수 있습니다. 보통 서로 다른 시스템(혹은 소프트웨어) 사이에서 데이터를 비동기 형태로 처리하기 위해 사용합니다. 이러한 구조를 보통 pub/sub 구조라고 하며 대표적으로 RabbitMQ 소.. 2021. 6. 24.
Spring boot의 Resource Server 구현 이전 시간에 이어 Resource Server를 구현하여 Authorization Server로 부터 받은 access token의 유효성을 체크해보겠습니다. Resource Server는 이전 시간에 개발한 Authorization Server로 부터 받은 access token이 필요하므로 Resource Server를 구현하기 전에 Authorization Server를 먼저 구현하시는 걸 추천합니다. 프로젝트 생성 Authorization Server와 같이 start.spring.io 사이트를 이용하여 다음과 같이 프로젝트 설정을 하고 intellij로 해당 프로젝트를 시작하겠습니다. 프로젝트 설정이 완료되면 다음과 같이 추가 의존성 라이브러리들을 추가해줍니다. dependencies { imp.. 2021. 6. 24.
Spring boot의 Authorization Server 구현 이전 시간에 이어 Authorization Server를 구현하여 access token을 생성하는 것까지 구현해보겠습니다. IDE는 intellij를 사용했고 jdk는 8버전, gradle, jwt를 사용하였습니다. 프로젝트 생성 spring boot 프로젝트 설정은 start.spring.io 를 이용하였습니다. intellij를 사용하시면 메뉴의 new project를 클릭하여 Spring Initializr를 사용하시도 됩니다. 스프링 부트 설정은 아래 그림을 참고하여 설정하시고 다운받은 프로젝트를 intellij를 통해서 로딩합니다. 프로젝트 기본 설정이 완료되면 build.gradle.kts의 dependencies에 다음 코드를 추가합니다. dependencies { ... implement.. 2021. 6. 24.