13 June 2024
gRPC vs REST 비교 gRPC는 구글에서 개발한 RPC 통신 프로토콜을 말합니다. RPC(Remote Procedure Call) 통신 프로토콜은 원격지의 프로시저를 호출 하는 통신 기술입니다. 오늘은 내부적으로 RestAPI를 활용한 개발을 많이 하고 있으나 gRPC 를 활용 해보면 어떨까? 하는 궁금증을 해소 하기 위해서 성능을 비교해 보고 장단점을 도출 하여 실무에 어떻게 적용 하면...
11 June 2024
트랜젝션 아웃박스 패턴 트랜젝션 아웃박스 패턴은 MSA 이벤트 기반 아키텍처에서 이벤트 발행 시 발생되는 이슈를 보완하기 위한 패턴입니다. 예를 들어, 주문 이벤트가 발생하여 DB에는 저장되었지만 이벤트 큐(MessageQueue)에 발행하다가 오류(네트워크 오류 등등)가 발생하면 어떻게 될까요? DB에는 주문이 들어갔지만 이벤트 큐 컨슈머는 발행된 이벤트가 없기 때문에 다음 절차를 진행하지 않을 것입니다. 이런...
22 May 2024
MSA 서비스 관리의 필요성 증가 프로젝트를 진행 하면서 다양한 서비스들을 만들게 되고 MSA 환경으로 작은 단위의 서비스가 분산 되는 형태로 구성 되다 보니 점점 관리의 필요성이 생깁니다. 하나의 서비스를 만들더라도 인증서버, 수신서버, 처리서버, 외부통신서버 등등 분산이 되게 되고 각각의 서비스의 상태 관리 자원관리 로깅, 미터링, 정산 등등 다양한 기능들이 필요합니다....
26 February 2024
Resilience4j 란? Resilience4j는 자바 언어로 개발된 내결함성 라이브러리입니다. 이 라이브러리는 분산 시스템에서 장애를 처리하고 시스템의 내결함성을 향상시키는 데 사용됩니다. Resilience4j는 일련의 내결함성 패턴을 구현하고, 이러한 패턴을 사용하여 애플리케이션을 더 견고하고 신뢰할 수 있도록 지원합니다. 주요 기능 리스트 Circuit Breaker : Circuit Breaker 패턴은 서비스 호출을 모니터링하고, 호출 실패 또는 지정된...
09 November 2023
DDD를 위한 헥사고날 아키텍처 이해하기 1 도메인 주도 개발(DDD) 를 위한 헥사고날 아키텍처를 이해하기 위한 첫번째 기록입니다. 개발 아키텍처에는 모놀리식 아키텍처 와 마이크로 서비스 아키텍처 두가지를 가지고 목표와 비즈니스 요건에 따라 다르게 설계를 하고 있습니다. 모놀리식 아키텍처(Monolithic Architecture) 에서는 어플리케이션이 거대한 하나의 아키텍처를 가지고 구성 되어 있는 구조 이기 때문에...
20 April 2022
MockWebServer 를 활용 하여 RestAPI 테스트 하기 RestAPI 를 통한 어플리케이션 개발시 목적지 API 의 기능이 다 완성 되지 않았거나 미계약 등등의 사유로 API 스팩만 전달 받고 개발을 진행 할 경우가 있었습니다. 이런 경우 MockWebServer를 활용 하여 선개발을 진행 할 수 있습니다. 간단한 테스트 클래스를 작성하여 테스트 하는 방법을 알아...
27 March 2022
스프링 new instance 에 @Autowired 하는 방법 스프링 기반의 개발 하다 보면 new instance, static class 를 사용하게 되는 경우가 있습니다. new 로 생성 되는 인스턴스의 경우에는 스프링 IoC에서 관리 되는 Bean을 주입 받지 못 하고 @Autowired 로 주입된 bean 이 null 인 것을 확인 할 수 있습니다. @Autowired 어노테이션이...
21 March 2022
AMQP(Advanced Message Queuing Protocol) AMQP(Advanced Message Queuing Protocol, 어드밴스트 메시지 큐잉 프로토콜) 은 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜입니다. 메시지 전달의 전달 보증, 신뢰성, 라우팅을 위한 기능 입니다. 무중단 서비스, 서비스의 scale-out, MSA 등을 위해서는 MQ를 사용 하는 시스템 구조가 유용합니다. MQ 에는 여러 가지 서비스가 있으나...
20 March 2022
스프링 배치 여러 곳에 write 를 하려면? 대부분의 배치서비스는 테이블 데이터를 읽어서(reader) 값을 확인 & 계산(processor) 한뒤 insert & update(writer) 하는 구성으로 되어있습니다. 하지만 1:1 구성으로 하나의 테이블 데이터를 읽어서 배치 처리를 하는 경우는 간단 하지만 하나의 테이블을 읽어서 여러 테이블에 처리를 해야 하는 경우에는 어떻게 처리를 할 것인가에 대해서...
19 March 2022
스프링 배치에서 테스트 코드를 작성 하려면 어떻게 해야 할까? 대부분의 배치 서비스들은 데이터를 읽어서(itemReader) 가공(itemProcess) 하여 처리(itemWriter) 하는 로직으로 구성 되어있습니다. 배치 서비스를 개발 하다 보면 실제로 배치를 수행 해보고 DB를 확인 하여 정상적인지 확인 하는 방법으로 검증 하였습니다. 로컬 테스트시에도 배치 대상 데이터를 임의로 생성 하고 배치를 돌려서 결과가...
25 November 2019
OAuth2 토큰 발급 이전 포스팅에서 SpringBoot OAuth2 를 이용하여 소셜 에서 인증을 받아서 나의 사이트에 로그인을 하는 기능을 살펴 보았습니다. 이번에는 third party 앱에서 나의 사이트에 접속하여 토큰을 발급 받고 인증을 할 수 있는 서버 기능을 추가 해보겠습니다. 환경 구성 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한...
19 November 2019
OAuth2 ?? OAuth2 란 Open Authorization , Open Authentication 를 뜻하는 것으로 Third party 에게 자원을 공유하거나 인증을 처리 해주는 표준 프로토콜 입니다. OAUth2에는 크게 토큰을 발급 할수 있는 서버 기능과 토큰을 이용한 인증 기능을 하는 기능으로 나뉘게 됩니다. 이번 시간에는 앞서 스프링 시큐리티에서 로그인 기능을 구현 하였기 때문에 해당...
19 November 2019
스프링 시큐리티?? 스프링 시큐리티는 어플리케이션의 보안을 위해 권한(Authorization)과 인증(Authentication) 에 대한 기능을 제공 합니다. 권한(Authorization)은 URL을 사용할 수 있는 권한을 말하며 인증(Authentication) 은 어플리케이션에 로그인 할 수 있는 기능을 말합니다. 허용되지 않은 페이지에 사용자가 접근 할 경우 스프링 시큐리티는 페이지 호출 전에 인증이 되어있는 지를 체크 하고 페이지에 접근 할...
18 November 2019
이번에는 스프링을 이용해서 예약 작업을 만드는 방법에 대해서 정리 해보겠습니다. 예약 작업은 특정 시간이나 반복되는 시간에 업무를 처리하는 어플리케이션입니다. 스프링에서는 예약 작업 기능을 제공함으로서 예약 작업을 편리하게 만들 수 있습니다. 환경 구성 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한 IDE H2 Database 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/Spring-Scheduler 기능...
17 November 2019
오늘은 매우 쉽고 간단한 스프링 배치 어플리케이션을 만들어 보겠습니다. 배치는 매우 중요한 서비스 입니다. 실시간으로 처리 하지 못하는 대량의 업무를 배치로 처리를 하고 있기 때문에 배치 개발을 알아 두는 것은 필수입니다. 환경 구성 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한 IDE H2 Database 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/JPA-Exam12-Batch...
13 November 2019
스프링 RestAPI를 통하여 회원 가입, 확인, 삭제 기능을 웹서비스를 만들어서 스프링 RestAPI 에 대한 사용 방법을 배워 보겠습니다. 스프링부트 웹서비스 만들기(RestAPI) 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한 IDE 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/JPA-Exam11-RestApi 기능 정의 회원 등록 기능(PUT) 회원 확인 기능(GET) 회원 삭제 기능(DELETE) pom.xml <dependencies> <dependency>...
13 November 2019
이번에는 앞서 공부 했던 JPA 와 스프링부트를 이용해서 웹사이트 로그인 부분을 만들어 보도록 하겠습니다. 매우 기본 적인 기능으로 로그인과 회원 가입 기능을 JPA 를 이용해서 사용 해보도록 하겠습니다. 스프링부트 + JPA 웹사이트 로그인 만들기 기본 환경 기본 환경은 앞선 포스팅 참조 : https://parkhyeokjin.github.io/jpa/2019/11/08/JPA-chap11.html 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/JPA-Exam10 기능 정의 로그인...