프로젝트
-
[Spring boot] Java 테스트 코드프로젝트/뉴스타 2024. 6. 17. 10:27
Java 테스트 코드 왜 궁금했을까❓뉴스타 서비스에서는 테스트 코드를 작성하여 서비스의 코드 품질을 높이고 장애를 사전에 방지하고자 작성해보려고 한다. 또한, 코드 수정 시 빠르게 검증하여 작업의 생산성을 향상시키고자 한다. 1. 단위 테스트 / 통합 테스트1.1. 단위 테스트 (Unit Test)하나의 기능 또는 함수를 기준으로 독립적으로 수행하는 가장 작은 단위의 테스트하나의 기능이 정상적으로 동작하는지를 테스트하는 것으로 "어떤 기능이 실행되면 어떤 결과가 나온다" 정도로 테스트한다.1.2. 단위 테스트 장점테스트에 대한 시간과 비용을 절감새로운 기능을 추가하거나 수정 시 빠른 테스트 가능리팩토링 시에 안정성 확보코드에 대한 문서화1.3. 통합 테스트 (Integration Test)하나의 기능 ..
-
[Spring Boot] Redis를 활용한 성능 향상프로젝트/뉴스타 2024. 6. 16. 10:00
Redis를 활용한 성능 향상 왜 궁금했을까❓뉴스타 서비스는 비로그인 서비스로 사용자 식별을 위한 고유 키값을 발급해 준다. 해당 키는 서비스를 이용할 때, 지속적으로 검사하는 과정이 존재하는데 MySQL에서 값을 조회하게 된다. 빈번한 디스크 I/O로 인해 DB에 부하가 갈 것이라 생각되어 In-Memory 방식인 Redis를 캐싱 서버로 활용하여 성능을 향상시키고자 한다. 1. 서비스 흐름도사용자가 서비스에 접속하면 UUID 발급 API를 서버에 전송한다.API 서버는 UUID를 생성하고 MySQL 서버에 저장한다.생성된 UUID를 사용자에게 응답한다.사용자 API를 사용할 때, UUID를 헤더에 담아 API 서버에 요청한다.올바른 사용자인지 확인하기 위해 MySQL에 있는 UUID를 조회한다.이와 ..
-
[Infra] 무중단 서비스를 위한 Health Check프로젝트/뉴스타 2024. 6. 14. 08:32
무중단 서비스를 위한 Health Check 왜 궁금했을까❓뉴스타 프로젝트는 CI/CD 과정에서 서비스가 중단되는 문제점이 존재했다. 이를 해결하고자 블루-그린 배포 전략을 도입하기로 했고 새로운 서버의 상태를 체크하는 Health Checking 과정이 필요했다. 단순히 서버에 ping을 쏴서 확인하는 방법도 있었지만 지원하는 라이브러리와 프로젝트 상황에 맞게 API를 만들어보려고 한다. 1. Health Check 란?서버가 정상적으로 작동하고 있는 지를 체크하고자 하는 것1.1 Health Check 방법Docker 명령어Docker에서 Health Check를 위한 명령어가 존재한다.HEALTHCHECK 명령어를 사용해서 컨테이너의 상태를 파악할 수 있다.interval, timeout, ret..
-
[Infra] Docker 이미지 최적화프로젝트/뉴스타 2024. 6. 13. 07:32
Docker 이미지 최적화 왜 궁금했을까❓Docker를 이용하여 이미지 파일을 만들어보니 약 5.1GB로 생각보다 이미지의 크기가 컸다. 큰 용량으로 인해 빌드 시간이 오래 걸려 배포가 늦어진다는 문제점이 존재했다. 이를 해결하고자 Docker 이미지 최적화를 찾아봤는데 Multi Stage Build, 작은 Base 이미지 등을 활용하여 줄이는 방법이 있었다. 이에 대해 알아보고 프로젝트에 적용해보려고 한다. [Infra] Dockerfile & Docker-Compose 작성Dockerfile & Docker-Compose 작성 왜 궁금했을까❓뉴스타 서비스의 경우 Docker를 이용하여 어플리케이션을 띄우기로 했다. 그래서 Dockerfile과 Docker-compose 작성법에 대해서 알아보고 뉴스..
-
[Infra] Dockerfile & Docker-Compose 작성프로젝트/뉴스타 2024. 6. 11. 08:56
Dockerfile & Docker-Compose 작성 왜 궁금했을까❓뉴스타 서비스의 경우 Docker를 이용하여 어플리케이션을 띄우기로 했다. 그래서 Dockerfile과 Docker-compose 작성법에 대해서 알아보고 뉴스타 서비스에 적용하는 과정까지 살펴보도록 하겠다. 1. Dockerfile 문법 Dockerfile referenceFind all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.docs.docker.com명령설명FROM베이스 이미지 설정LABEL이미지의 Metadata 설정CMDDocker Container를 생..
-
[Infra] Nginx Reverse Proxy & SSL 적용프로젝트/뉴스타 2024. 6. 10. 08:56
Nginx Reverse Proxy & SSL 적용 왜 궁금했을까❓Nginx를 Proxy 서버로 두어 SSL을 적용하고 내부 서버에 직접 접근하는 것을 막고자 Reverse Proxy 기술을 적용해 보려고 한다. 또한, Forward Proxy와 Reverse Proxy의 동작 원리와 차이점을 알아보고자 한다. [Infra] Nginx 란?Nginx 왜 궁금했을까❓뉴스타 프로젝트에서 인프라 구축을 담당하여 Reverse Proxy, SSL, LoadBalancing 등의 장점이 있는 Nginx를 활용해 보기로 했다. 해당 포스트를 통해 Apache Server와 Nginx의 동작 원리와pslog.co.kr위 포스팅을 통해 Nginx에 대한 개념과 원리를 학습할 수 있다.1. Proxy란?Proxy는 사전..
-
[Infra] Nginx 란?프로젝트/뉴스타 2024. 6. 8. 10:56
Nginx 왜 궁금했을까❓뉴스타 프로젝트에서 인프라 구축을 담당하여 Reverse Proxy, SSL, LoadBalancing 등의 장점이 있는 Nginx를 활용해 보기로 했다. 해당 포스트를 통해 Apache Server와 Nginx의 동작 원리와 차이점을 알아보도록 하겠다.1. Web Server란?정적 콘텐츠를 요청한 클라이언트에게 제공하는 역할html, css, 이미지 등이 정적 콘텐츠에 해당사용자가 정적 콘텐츠를 요청하면 Web Server가 DB에서 파일을 읽어와 그대로 사용자에게 반환하는 로직이다.만약, 비즈니스 로직이 요구되며 WAS를 추가하여 동적으로 데이터를 처리할 수 있게 된다.1.1. Web Server의 역할위와 같은 이유로 Web Server와 WAS를 함께 사용하는데 Web ..
-
[Infra] Apache Kafka프로젝트/당일 2024. 6. 6. 16:21
Apache Kafka 왜 궁금했을까❓당일 서비스에서 WebSocket으로 서버 간의 통신을 지원했는데 안정성과 장애 복구 등에 취약하다는 것을 알고 Kafka로 전환하기로 결정했다. 어느 정도 개념은 알고 있지만 자세하게는 알지 못해 이번 기회에 깊이 공부해 보려고 한다.1. Apache Kafka란?Apache Kafka는 대규모 실시간 데이터 스트리밍을 처리하는 데 사용하는 분산 이벤트 스트리밍 플랫폼이다.Pub-Sub 모델의 메시지 큐 형태로 동작하며 분산 환경에 특화되어 있다.Kafka가 도입되기 전에는 위와 같이 서버 간의 End-to-End로 연결되어 데이터를 주고받았다.이로 인해, 서비스의 복잡도가 증가하고 확장이 어려워지며 장애 발생 가능성도 증가하는 문제점이 존재한다.Kafka가 도입하..