들어가며 자바 언어를 공부하면서 인터페이싱과 추상화에 대해 이론적으로 공부는 어느정도(많이?) 했다. 처음에 인터페이스 클래스 썼을 때 서비스 클래스를 만들면 그 해당 서비스의 인터페이스 클래스를 만들어서 상속 받아 처리하는 구조로 썼지만 "왜 이렇게 해야하지? 이러면 불필요한 클래스 하나 더 추가하는 게 아닌가?" 생각이 들곤 했다. 이번에 다시 공부하면서 왜 사용하는지? 어떻게 써야 좋은건지? 어떤 경우에 써야하는지? 질문에 대한 답을 찾은 거 같아서 글을 남기기로 하였다. 요구사항 요구사항은 메세지 발송 기능이다. 메세지 발송 종류는 이메일 발송, 카카오 알림톡 발송, 앱 푸쉬 발송 3가지가 있다. 각 메세지 발송마다 여러가지 형태가 존재한다. 예를 들어 카카오 알림톡일 경우 메세지 종류는 자유형식..
외부 도메인 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. 트랜잭션..
쇼핑몰 사이트 같은 경우 하나의 상품에 여러 개의 사진이 들어간다. 10개 이상 사진 업로드를 할 경우 서버에서 처리하는 시간이 대략 2초 이상 걸리다 보니 성능 개선이 필요성을 느꼈다. 처리속도를 개선하기 위해 비동기 방식의 멀티스레드를 이용해서 처리하면 싱글 스레드보다 멀티 스레드가 훨씬 빠른 장점이 있기 때문에 Spring에서 제공해주는 ThreadPoolTaskExecutor 이용해서 처리하였다.실제로 파일 15개 싱글 스레드로 구현할 경우 대략 2초 걸린 것을 확인할 수 있다. 1. ThreadPoolTaskExecutor 개념과 설정[ ThreadPoolTaskExecutor 란? ]ThreadPoolTaskExecutor는 Spring에서 제공하는 멀티 스레드 작업을 관리하는 유용한 도구입..