들어가며 자바 언어를 공부하면서 인터페이싱과 추상화에 대해 이론적으로 공부는 어느정도(많이?) 했다. 처음에 인터페이스 클래스 썼을 때 서비스 클래스를 만들면 그 해당 서비스의 인터페이스 클래스를 만들어서 상속 받아 처리하는 구조로 썼지만 "왜 이렇게 해야하지? 이러면 불필요한 클래스 하나 더 추가하는 게 아닌가?" 생각이 들곤 했다. 이번에 다시 공부하면서 왜 사용하는지? 어떻게 써야 좋은건지? 어떤 경우에 써야하는지? 질문에 대한 답을 찾은 거 같아서 글을 남기기로 하였다. 요구사항 요구사항은 메세지 발송 기능이다. 메세지 발송 종류는 이메일 발송, 카카오 알림톡 발송, 앱 푸쉬 발송 3가지가 있다. 각 메세지 발송마다 여러가지 형태가 존재한다. 예를 들어 카카오 알림톡일 경우 메세지 종류는 자유형식..
들어가며전략 패턴 정의는 각각의 알고리즘 군을 교환이 가능하도록 별도로 정의하고 각각 캡슐화한 후 서로 교환해서 사용할 수 있는 패턴이다. 이 패턴을 적용시키기 위해서 회원 정보와 결제 정보를 외부에 요청을 보내는 서비스에 적용해보았다. 또한 제네릭을 통해 각각 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- 각 서버를..
2022.05 ~ 2022.06 진행 - 김영한 님의 인프런 스프링 DB 강의 정리 - 커넥션 풀, 트랜잭션 원리, DB 접근 기술 등 기본적인 원리를 알게 되는 강의였다. - 프로젝트 코드 1일차 - JDBC 이해 JDBC 개념 - Java Database Connectivity 약자로, 자바에서 데이터베이스를 접속할 수 있는 API JDBC 나오기 전 문제점 - DB 변경하면 애플리케이션 서버에 개발된 DB 사용 코드도 함께 변경해야 한다. - 개발자가 DB마다 커넥션 풀, SQL 전달, 결과를 응답받는 방법을 새로 학습해야 한다. JDBC 한계 - JDBC 인테페이스를 통해 각 DB 벤더를 맞출 순 있지만 SQL 데이터 타입 등 일부 사용법이 다르다. - JPA를 사용하면 각각 DB마다 다른 SQL..