프로젝트

1. nGrinder란?nGrinder는 Naver에서 제공하는 오픈 소스 성능 테스트 도구로, 웹 애플리케이션, API, 서버의 성능을 측정하고 부하를 시뮬레이션하는 데 매우 유용한 도구입니다. 특히, 자바 기반의 스크립트 언어(Jython, Groovy)를 지원하여 코드 작성이 용이하며, 분산 환경에서 대규모 성능 테스트를 간편하게 수행할 수 있도록 설계되었습니다. 지금부터는 Ngrinder를 설치하고 스크립트 작성하는 방법을 알아보겠습니다. 2. docker-compose.yml 파일 작성version: '3.8'services: controller: image: ngrinder/controller restart: always ports: - "9000:80" ..
1. 문제점티켓 예매 특성상 특정시간에 엄청난 사람이 한꺼번에 몰려 예매를 시도하게 됩니다. 이 때 같은 좌석은 여러명이 예매할 수 없도록 해야하는데, 동시성 문제에 대한 처리가 없는 상황에서 여러명이 예매 요청을 할 경우에는 같은 좌석에 여러명의 사람들이 예매가 되는 문제가 발생하게 됩니다. 그렇다면 이런 상황이 왜 벌어지게 되는걸까요? 테스트 실행멀티 쓰레드를 이용해 100명의 사용자가 동시에 예매를 진행하는 테스트 코드를 작성해 해당 문제를 확인해봅시다. @Test void 티켓예매시_좌석_동시성_테스트를_진행한다() throws InterruptedException { List seatIds = List.of(1L); ReservationRequest reque..
1. QueryDsl 이란 무엇일까?Spring 프로젝트를 진행하다보면 Spring Data JPA가 기본적으로 제공해주는 메서드를 사용하면 기본적인 CRUD 작업을 손쉽게 진행할 수 있습니다. 하지만 복잡한 조건의 데이터가 필요할 경우에는 JPQL 같은 방법을 이용해 쿼리를 작성하게 됩니다. 이 때 문법적인 오류나, 오타 등이 존재하는 경우 런타임 시점에 확인할 수 있고, 가독성이 떨어지는 문제들이 발생하게 됩니다.이 때 QueryDsl을 사용하게 되면 이러한 문제들을 어느정도 해결할 수 있으며 아래와 같은 장점들을 갖추고 있습니다.QueryDsl? 정적 타입을 이용해 SQL 등의 쿼리를 생성할 수 있도록 해주는 프레임워크문자가 아닌 자바 코드로 쿼리를 작성하기 때문에 컴파일 시점에 문법 오류를 쉽게 ..
1. Github Actions를 선택한 이유Github Actions는 Github에서 제공하는 CI/CD 툴로 Github가 서버를 제공해주기 때문에 따로 서버를 구성하지 않아도 되고, YAML 기반 워크플로우 파일을 작성해 push, pull request 등의 이벤트를 트리거로 하여 다양한 작업을 자동으로 수행할 수 있습니다.또한 다양한 액션들을 제공해 손쉽게 CI를 구성할 수 있어 Github Actions를 선택하게 되었습니다. 2. Github Actions기본 용어Workflow 자동화된 프로세스를 정의하는 YAML 파일 github/workflows 디렉토리에 위치하며 특정 이벤트가 발생할 때 실행됩니다. Event 워크플로우를 트리거하는 활동들을 의미합니다.(push, pull requ..
application.yml 설정 추가spring: security: oauth2: client: registration: google: client-id: client-secret: scope: - email naver: client-id: client-secret: scope: - nickname - email client..
1. OAuth란 무엇인가?OAuth는 Google, Naver 등과 같은 플랫폼에서 제공하는 사용자 데이터나 서비스에 접근하기 위해 사용자가 직접 자신의 데이터에 대한 접근 권한을 제 3자(우리가 개발하는 서비스)에게 위임할 수 있도록 해주는 개방형 표준 프로토콜입니다. 이는 사용자가 외부 소셜 계정으로 간편하게 회원가입 및 로그인을 할 수 있을 뿐만 아니라, 구글 캘린더 등과 같은 다양한 외부 애플리케이션에서 제공하는 기능들을 우리의 서비스에서도 사용할 수 있도록 해줍니다.  2. OAuth의 구성요소Resource Owner :  웹 서비스를 이용하려는 유저, 구글 네이버 등 플랫폼에서 리소스를 소유하고 있는 사용자Authorizaition Server : Resource Owner를 인증하고 우리..
1. 개요서비스를 운영하며 장애는 언제든지 발생할 수 있고, 장애에 대응하는 것은 중요한 일입니다.그렇기 위해서는 시스템의 상태를 실시간으로 모니터링하고 관리하는 것이 매우 중요합니다. 모니터링을 시스템을 이용하면 운영상 발생하는 오류에 대해 빠른 확인이 가능하고, 시스템 상태를 통해 성능을 개선할 수 있습니다. 지금부터는 스프링 Actuator, 프로메테우스, 그라파나를 이용해 모니터링 시스템을 구축해보도록 하겠습니다.  2. Spring Actuator스프링 부트가 제공하는 액츄에이터는 지표 수집, 추적 감사 등의  모니터링하고 관리할 수 있는 다양한 편의 기능들을 제공합니다. 가장 먼저 Gradle 의존성을 추가해줍니다.implementation 'org.springframework.boot:spr..