본문 바로가기

분류 전체보기

(39)
[CI/CD] 실시간 채팅 애플리케이션 프로젝트 - CI/CD를 위한 Dockerfile 작성하기 📖 목차 지난 포스팅에서 GitHub Actions를 활용해 CI/CD 파이프라인을 구축해 보았다.[CI/CD] 실시간 채팅 애플리케이션 프로젝트 - GitHub Actions를 통한 CI/CD 구축하기 - (2) 이번 포스팅에서는 Dockerfile을 작성하는 방법에 대해 알아보자. 📌 Dockerfile이란? Dockerfile은 Docker에서 이미지를 생성하기 위한 용도로 작성하는 스크립트(설정파일)이다. FROM, RUN, COPY 등의 명령어를 포함하며, 이 명령어들을 순서대로 실행하여 컨테이너 환경에 필요한 모든 요소를 담은 이미지를 빌드한다. Dockerfile을 작성하기 전에, Dockerfile을 작성하면 어떤 장점이 있는지 확인해 보자.1️⃣ 이..
[Java] Jackson 라이브러리의 ObjectMapper 보호되어 있는 글입니다.
[Redis] 항공 예매 서비스 - 항공권 예매 동시성 이슈 해결을 위한 Redisson 분산 락 적용 📖 목차 Spring Boot MSA 기반으로 항공권 티켓팅 서비스를 구현하던 중, 항공권 예매 시 발생할 수 있는 동시성 이슈를 해결하기 위해 대기열 서비스에 Redis의 Redisson 라이브러리를 이용해 분산 락을 적용했다. 초기 구현 당시 대기열 서비스가 사용자 요청 순서를 보장하고 있었지만,'대기열 서비스에 적용된 동시성 제어가 항공편 서비스에서의 좌석 수까지 안전하게 보장해 줄 수 있을까?'라는의문을 가지게 되면서 서비스 간 동시성 제어의 책임 분리에 대한 문제점을 인식하여 개선하는 과정을 정리해 보았다. 📌 대기열 서비스에만 적용된 동시성 제어에 의문을 가지계 된 계기 항공편 예매 서비스의 기본 흐름은 다음과 같다. 1️⃣ 사용자가 항공편 예약 요청2️⃣ 대기열 ..
[Redis] Redis Cache 직렬화 및 역직렬화 오류의 발생과 해결 📖 목차 항공권 티켓팅 서비스를 구현하던 중, 항공권 조회 속도를 개선하기 위해 Redis Cache를 적용하게 되었다.하지만, 캐시를 저장해서 꺼내오는 과정에서 오류가 발생하는 것을 확인했다.어떤 오류가 발생했고, 어떻게 해결했는지 과정을 정리해 보았다. 📌 Redis Cache를 적용하게 된 이유 우선 Spring Boot MSA 아키텍처 기반으로 대용량 트래픽에도 안정적인 서비스를 구성하는 것이 프로젝트의 목표였고, 그 목표를 가지고 항공권 예매 서비스를 구현하고 있었다. 이때, 대기열과 예약 서비스 그리고 실제 항공편 API(Amadeus API)를 연동한 통합 성능 테스트를 진행하면서 문제점을 발견하게 되었다. 💡 Jmeter를 통해 다음과 같은 조건으로 테스트를 해본..
[Redis] 음식 주문 관리 플랫폼 - Redis와 스케줄러를 활용한 리뷰 평점 구현 📖 목차 Spring Boot를 기반으로 '음식 주문 관리 플랫폼'을 개발하게 되었다.음식점과 리뷰 도메인을 맡아 기능을 구현하게 되었는데,가게 조회 시 리뷰의 평점과 개수가 함께 조회되어야 하는 요구사항이 있었다. 여러 번의 고민을 거쳐 리뷰 평점과 리뷰 개수를 N+1 문제없이 조회 가능하도록 구현하였다.어떤 문제점이 있었는지와 그 해결방법에 대해 알아보자. 📌 프로젝트 요구사항 이 프로젝트의 필수 기능 요구사항 중 하나이다. 기능 요구사항을 살펴보면, 가게 목록을 조회 시 평점을 노출해야 한다고 되어있다.처음에 기능만 생각하고 구현을 하다 보니 가게를 상세 조회하거나 검색해서 가게 목록을 조회할 때, 리뷰 수와 평점을 그때그때 계산하여 보여주도록 로직을 작성했다.💡 리뷰 및 ..
[CI/CD] 실시간 채팅 애플리케이션 프로젝트 - GitHub Actions를 통한 CI/CD 구축하기 - (2) 📖 목차    지난 포스팅에서 CI/CD가 무엇인지에 대해 알아보았다.[CI/CD] 실시간 채팅 애플리케이션 프로젝트 - GitHub Actions를 통한 CI/CD 구축하기 - (1)  이번 포스팅에서는 프로젝트 초기 세팅과 더불어 GitHub Actions를 활용해 직접 CI/CD를 구축해 보자.       📌  GitHub에서 설정하기  인텔리제이에서 프로젝트를 생성하고, 깃허브 레포지토리에 연결해 주거나 깃허브에서 바로 레포지토리를 생성해도 된다.  깃허브 레포지토리를 생성하면 나오는 페이지에서 Actions 탭을 선택하거나 creating new file을 선택 후 다음 단계로 넘어가준다. Actions 탭을 선택하면 템플릿을 검색하고 선택할 수 있는 페이지로 넘어가고, creating n..
[CI/CD] 실시간 채팅 애플리케이션 프로젝트 - GitHub Actions를 통한 CI/CD 구축하기 - (1) 📖 목차    개인적으로 SpringBoot를 기반으로 한 실시간 채팅 서버를 구현해보려고 한다.이커머스 팀 프로젝트를 진행하면서 시간 상 직접 구현해보지 못했던 부분을 위주로 진행할 예정이다.이번 포스팅에서는 CI/CD가 무엇인지에 대해 알아보도록 하자.       📌  CI/CD란?  CI/CD는 소프트웨어 개발 프로세스를 자동화하여 빠르고 안정적인 배포를 가능하게 하는 Continuous Integration(지속적 통합)과 Continuous Delivery/Deployment(지속적 전달/배포)의 약자이다. 개발자가 코드를 작성하는 순간부터 실제 사용자에게 서비스를 제공하는 순간까지의 모든 과정을 자동화하는 것을 목표로 한다. ✔️ CI(지속적 통합)개발자가 작성한 코드를 자주 병합하고, ..
[Docker] Docker로 Tomcat 실행하기 📖 목차    지난번 포스팅에서 Docker와 Docker로 MySQL을 실행하는 방법에 대해 알아보았다.[Docker] Docker로 MySQL 실행하기 [Docker] Docker로 MySQL 실행하기📖 목차   데이터베이스에 대해 공부를 하다가 MySQL 설정을 이것저것 변경해 보았다.이후, 다른 프로젝트를 시작할 때 설정을 다시 바꿔야 해서 불편했던 경험이 있다.설정을 다시 변경해야zzudev.tistory.com 이번 포스팅에서는 Docker가 이미 설치되어 있다는 가정하에,Docker를 이용하여 톰캣(Tomcat)을 실행하는 방법에 대해 알아보자.             📌  톰캣(Tomcat) 버전 확인  Docker는 이미 설치되어 있다는 가정 하에, 톰캣(Tomcat) 컨테이너를 실행..