Webflux 소개
·
프레임워크/자바 스프링
Spring WebFlux는 Reactive Stream API를 기반으로 한 비동기, 논블로킹 웹 프레임워크로, 대량의 트래픽과 I/O가 많은 환경에서 기존 서블릿 기반의 Spring MVC보다 더 효율적인 성능을 제공합니다. WebFlux의 핵심 키워드는 Reactive Stream, Non-blocking, Asynchronous입니다.주요 활용 사례마이크로서비스 게이트웨이(Gateway)WebSocket실시간 채팅 서비스하지만 모든 상황에서 Spring WebFlux가 최적은 아닙니다. 특히 CPU Bound 작업(연산이나 계산이 주가 되는 경우)에서는 Spring MVC와 같은 동기 처리 방식이 더 나은 성능을 발휘할 수 있습니다. 반면, I/O Bound 작업(입출력 작업이 많은 경우)에서는 ..
접속자 대기열 시스템 #1: 시스템 설계와 Spring WebFlux, Redis
·
프레임워크/자바 스프링
1. 접속자 대기열 시스템 (Spring WebFlux + Redis)1.1 프로젝트 설명접속자 대기열 시스템입니다.이벤트 티켓 예매와 같은 이커머스에서 주로 사용됩니다. 특정 시간대에 이벤트가 발생하게 되면 사용자가 많이 몰리게 되면 트래픽이 급겹하게 몰리게 됩니다.짧은 시간안에 이런 트래픽을 처리 하기 위해서는 특정 기술이 필요합니다. 단순한 Spring MVC가 아닌 Spring Webflux와 Redis를 활용합니다. Spring WebFlux와 Redis가 어떻게 대기열을 관리하는지 보여줍니다.1단계: 대기 페이지 요청/응답사용자가 웹 애플리케이션 서버에 접속을 시도하면, 서버는 사용자에게 대기 페이지를 응답합니다. 이 대기 페이지에서 사용자는 대기열에 등록됩니다.2단계: 대기열 등록사용자가 대..
대규모 트래픽 게시판 구축 시리즈 #14: 배포 자동화
·
프레임워크/자바 스프링
CI/CD는 지속적인 통합과 지속적인 배포라 합니다.Continious IntegrationContinious Delivery(Deployment)CI Process코드작성자동빌드자동 테스트자동화된 통합CD ProcessCI를 통한 자동화자동 배포 준비수동 승인자동 배포GradleGradle은 JVM 기반 프로젝트를 빌드하고 관리하기 위한 오픈소스빌드 자동화 도구플러그인 시스템 :다양한 플러그인을 제공하며, 다양한 프로젝트 유형 지원의존성 관리: Gradle은 프로젝트의 의존성 관리멀티 프로젝트 빌드: Gradle은 여러 프로젝트를 하나의 빌드로 관리 가능.빌드 캐시 : 빌드 시간을 최적화하기 위해 Gradle은 이전 빌드에서 생성된 산출물을 캐시하고 빌드 시간을 단축유연한 태스크: Gradle은 태스크..
대규모 트래픽 게시판 구축 시리즈 #13: 알림 서비스 구현과 통합 - AWS SNS 및 Slack
·
프레임워크/자바 스프링
이론알림?알림은 Spring Boot 애플리케이션 내에서 이벤트, 경고 또는 에러와 같은 중요한 상황을 감지하고 이를 관리자,개발자, 유저에게 알리는 기능을 가리킵니다.알림은 어플리케이션의 신속한 대응과 문제 해결을 돕는 데 중요한 역할을 합니다.장애 감지와 대응서비스 가용성 유지성능 모니터링비용 절감사용자 경험 향상예방적 조치AWS SNS 연동Amazon SImple Notification Service(Amazon SNS)은 AWS의 클라우드 기반 메시징 서비스입니다. Amazon SNS를 사용하면 애플리케이션, 서비스 또는 시스템 간에 다양한 종류의 메시지를 안전하게 전송하고 관리 할 수 있습니다.기능푸시알림다중 프로토콜(HTTP, HTTPS, SMS, email, SQS, Lambda 등 지원)이..
대규모 트래픽 게시판 구축 시리즈 #12: 성능 테스트
·
프레임워크/자바 스프링
이론성능 테스트란어플리케이션의 성능, 확장성, 안정성을 평가하는 과정부처 처리 능력, 응답시간, 처리량, 자원사용량과 같은 성능 지표를 측정하여어플리케이션의 예상된 작업 부하 아래에서 어떻게 수행되는지 이해에 도움을 줌종류스트레스(Stress) 테스트어플리케이션을 최대 부하에서 테스트하는 과정을 의미앱의 성능 한계를 확인하고 앱의 부하 처리 능력을 평가함대량의 동시 사용자 또는 트랜잭션을 생성하여 앱의 응답 시간과 자원 사용량을 모니터링함.스트레스 테스트에서 앱이 어떻게 실패하는지, 예를 들어 응답 시간이 급겹하게 증가하는 등의 현상을 파악스파이크(Spike) 테스트갑작스러운 부하 증가에 대한 앱의 대응능력 테스트를 지칭예, 특정 이벤트나 광고 캠페인으로 인해 갑자기 많은 사용자가 앱에 액세스하는 시나리..
대규모 트래픽 게시판 구축 시리즈 #11: 로깅, 예외처리
·
프레임워크/자바 스프링
1. 로깅이란?로깅은 어플리케이션의 동작 및 활동을 기록하고 추적하는 프로세스를 가리킵니다. 실행 중 발생하는 이벤트, 오류, 경고, 중요한 정보 및 디버깅 메시지를 기록하며, 이를 통해 다음과 같은 효과를 얻을 수 있습니다:디버깅 및 오류 식별: 오류 발생 시 어떤 상황에서 문제가 발생했는지 추적하여 신속한 해결을 도울 수 있습니다.성능 모니터링: 애플리케이션의 성능을 분석하고, 병목 현상을 식별해 성능을 최적화할 수 있습니다.보안: 보안 로그를 통해 불법적인 접근을 추적하고, 시스템의 보안 상태를 모니터링할 수 있습니다.이력 추적: 사용자 활동 기록 및 데이터 변경 내역을 추적해 감사 목적으로 사용할 수 있습니다.2. 로깅 레벨로깅 레벨은 로깅할 이벤트의 심각도를 정의하는 단계입니다. 로깅 레벨을 적..
대규모 트래픽 게시판 구축 시리즈 #10: 게시판 검색 API
·
프레임워크/자바 스프링
이번 글에서는 Redis를 이용하여 게시판 검색 API를 구현하는 방법에 대해 설명합니다. Redis는 고성능의 인메모리 데이터 저장소로, 데이터 조회 속도가 매우 빠르기 때문에 대규모 트래픽을 처리하는 시스템에 적합합니다. Redis를 캐시로 사용하면 데이터베이스 부하를 줄이고 응답 속도를 크게 향상시킬 수 있습니다.1. Redis와 캐시 개념1.1 Redis란?Redis(Remote Dictionary Server)는 인메모리 데이터 저장소로, 주로 캐시(Cache) 또는 빠른 데이터 저장을 위해 사용됩니다. Redis는 NoSQL 데이터베이스의 일종으로, 메모리에서 데이터를 관리하기 때문에 읽기와 쓰기 속도가 매우 빠릅니다.1.2 Redis의 장점빠른 응답 속도: 모든 데이터가 메모리에 저장되므로,..
대규모 트래픽 게시판 구축 시리즈 #9: 게시판 API
·
프레임워크/자바 스프링
1. 개요이번 구현에서 다루는 주요 기능은 다음과 같습니다:게시글 CRUD: 사용자가 게시글을 생성, 조회, 수정, 삭제할 수 있도록 API를 설계.댓글 기능: 각 게시글에 댓글을 달고, 댓글을 수정, 삭제하는 기능 구현.태그 관리: 게시글에 태그를 추가하고, 태그를 수정 및 삭제하는 기능.각 기능은 Controller, Service, Mapper, DTO를 사용해 계층 구조로 분리되었으며, MyBatis를 통해 데이터베이스와 상호작용합니다.2. PostController: 게시글 관련 API 구현PostController는 게시글 관리 엔드포인트를 정의하고, 사용자의 요청을 처리하여 게시글의 생성, 조회, 수정, 삭제 기능을 제공합니다. 이를 통해 게시판의 핵심 기능인 게시글 작성과 조회를 관리할 수..