공연에 대한 조회 시 조회한 공연의 조회수를 늘려주는 기능이 존재한다. 해당 조회수는 다른 API의 조회 기능에서 사용되며, 조회수를 단순히 1 늘려주는 작업이며 DB에 접근하며 수정이 진행된다.여러 트랜잭션에서 조회수 갱신 시도 시 조회수가 예상보다 적은 수치로 기록되는 동시성 문제가 발생한다. 공연을 조회하는 API에서 조회수 갱신이 같이 수행되고 있다.현재, 조회수를 갱신하는 API에는 크게 두가지 문제점이 존재한다. 문제1: 조회수 동시성 문제여러 트랜잭션이 동시에 조회수 증가 업데이트 요청 시 조회수가 정확하지 않게 갱신될 수 있다.문제2: 공연 조회 API 의 성능 문제조회수 갱신 로직의 성능이 조회 API의 성능에 영향을 준다.현재 방법으로는, 클라이언트에서 조회수 갱신이 완료되어야 공연 ..
서버 배포와 함께 모니터링을 세팅하면서 다음과 같은 의문이 들었다.Spring Actuator가 기본으로 제공하는 메트릭으로는 파악하기 어려운 부분을 모니터링할 수 없을까? 특히나, 외부와 상호작용하거나 통신하는 부분을 모니터링하고 싶었다. 이러한 부분들에 대한 커스텀 메트릭을 만들기로 결정하였다. 다음과 같은 부분을 타겟으로 success, failure 횟수와 소요 시간을 메트릭화 하고자 한다.OpenAPIInternal API (core alarm)Redis Pub/Sub 모니터링을 위한 메트릭 추가를 횡단 관심사로 보았고, 각 메서드마다 이름을 주어 간편히 사용할 수 있도록 어노테이션과 AOP 기반으로 적용해보았다. 어노테이션, AOP 코드 예시@Target({ElementType.METHOD..
Showpot 서비스 운영을 계획 중이다. 현재 준비 작업 중에 있으며, 서버의 경우 기능 구현은 거의 완료된 상황이다.2024-12-04 기준 어플이 앱스토어에 등록되지는 않았다. (서비스 특성 상 웹사이트로 클라이언트를 만들지 않았다.)예상되는 초기 유저 수를 고려해 부하를 견딜 수 있는지 확인하기 위해 성능 테스트를 진행하였다.예상 유저 수: 100명원하는 처리량: 50 ~ 100tps사용 중인 인스턴스: aws t2.micro (프리티어)메모리: 1GB + swap memory 2GBvCPU: 1성능 테스트 툴의 경우, Locust를 선택하였다.지속적으로 부하를 발생시키는데에 적합하며, 각 API에 우선순위를 지정할 수 있다는 장점이 있기에 선택했다.시나리오각 유저는 초기 1회 로그인을 시도한다...