들어가며전략 패턴 정의는 각각의 알고리즘 군을 교환이 가능하도록 별도로 정의하고 각각 캡슐화한 후 서로 교환해서 사용할 수 있는 패턴이다. 이 패턴을 적용시키기 위해서 회원 정보와 결제 정보를 외부에 요청을 보내는 서비스에 적용해보았다. 또한 제네릭을 통해 각각 VO 객체를 보낼 수 있도록 유연함도 추가하였다. 큰 구조로 보면 요청을 보내는 인터페이스와 각각 전략을 넣을 수 있는 구현 클래스들로 구성된다.코드 설계GateRequestService.javapublic interface GateRequestService { void request(T object);}외부에 요청을 보내는 메서드 생성제네릭 vo 객체를 받을 수 있도록 설정GateRequestSignUpService.javaGateRequ..
외부 도메인 API 요청을 할 경우 다양한 옵션이 있습니다. Web Client, Socket, Apache Client, Feign Client, RestTemplate 등이 대표적입니다. 그 중에서 Feign Client에 대해 알아보도록 하겠습니다. 1. Feign Client 개념과 라이브러리 [ Feign Client 란? ]Feign Client는 외부 API 요청하는 라이브러리와 비슷하게 서버와 통신할 때 HTTP 프로토콜을 사용하는 라이브러리를 의미합니다. [ Feign Client 기능 ]요청 및 응답 처리: GET, POST, PUT, DELETE 등 다양한 HTTP 요청 메소드를 지원하고, 서버로부터의 응답을 처리합니다.직관적인 API 설계: 개발자가 손쉽게 HTTP 요청을 작성하..
동시성 이슈는 여러 사용자가 동시에 같은 자원에 접근하거나 동일한 작업을 수행할 때 발생할 수 있습니다. 이러한 상황에서 데이터 무결성이 깨지거나 시스템 오류가 발생할 수 있습니다. 이번 글에서는 동시성 이슈가 발생할 수 있는 시나리오를 포인트 신청 예시를 통해 설명하고, 이를 해결하기 위한 다양한 접근 방법을 살펴보겠습니다. 1. 포인트 신청 - 동시성 이슈 시나리오다양한 동시성 이슈가 발생할 수 있는 상황은 다음과 같습니다:포인트 신청 버튼을 동시에 두 번 누르는 경우Postman을 사용하여 동시에 여러 번 요청을 보내는 경우악의적으로 여러 개의 웹 페이지를 열어두고 수익금 신청을 동시에 시도하는 경우 개발환경 : Java 11, SpringBoot 2.7.72. 해결 방법[ 방안 1. 트랜잭션..
2022.08 ~ 2022.09 진행 - 푸 님의 클래스101 백엔드 시스템 개발 실무 정리 - GCP, Jenkins, 무중단 배포(로드밸런싱), Git Sourcetree, MQ, Elasticsearch 개념과 왜 사용하는지, 어떻게 사용하는지에 대해 알 수 있었던 강의였다. 1주차 - Docker, Docker Hub, GCP 세팅Docker 개념- 각각의 Docker 애플리케이션을 마치 '프로세스' 간주- db, redis, rabbitMQ 등 docker를 통해 프로세스를 실행하여 local, VM 환경에서 손 쉽게 사용 가능Docker Hub- docker image 저장하는 곳 - jenkins에서 docker hub의 이미지를 가져와서 실행시키는 구조GCP- 각 서버를..