Diary/WIL (13) 썸네일형 리스트형 2024-05-05 팀 프로젝트 회고프로젝트 명: PigonAir프로젝트 기간: 3/26 ~ 5/7프로젝트 목표:주요 목표대용량 트래픽에 견딜 수 있는 서버 설계달성 여부60%성과 및 성취성취한 목표:목표 1: redis, webflux를 적용한 대기열 구현목표 2: 결제 후 이메일 발송 기능목표 3: 테스트 과정 자동화실패한 도전 과제 및 문제도전 과제:과제 1: MSA 구현하기과제 2: AutoScaling의 느린 적용과제 3: DB replication, readonly 구현 문제 및 이슈:문제 1: 서버 분리까진 성공했으나 messageque의 learning curve로 인해서 쿠키의 형태로 넘겨주려고 했음쿠키를 직접 넘겨줄 경우, cors 에러가 발생하여 직접 넘어가지 않았음.약식으로 주소로 쿠키를 넘겨주고, i.. 2024-04-28 커넥션 풀초기화: 애플리케이션 시작 시, 설정에 따라 정해진 수의 데이터베이스 연결을 생성하고 풀에 저장재사용: 애플리케이션이 데이터베이스 연결을 요구할 때, 풀에서 연결을 꺼내어 사용반환: 작업이 끝나면 연결을 풀로 반환합니다, 연결은 닫히지 않고 다음 요청 때 재사용이 과정을 통해서 작동된다. 이 기술을 사용함으로써 기대할 수 있는 점은,미리 생성된 db 연결을 사용하기 때문에 성능 향상을 기대할 수 있고,수많은 db 연결을 생성/제거 하는 작업을 커넥션 풀을 사용하여 최적화하였다. 또한 Spring Boot에서는 기본적으로 HikariCP를 사용하기에 별도의 설정이 필요하지 않다.바로 application.yml에서 설정을 해줌으로써 사용해줄 수 있는데,spring: datasource: .. 2024-04-21 webflux와 redis를 이용한 대기열 시스템 구현 채택 채택 이유: 처리 속도가 빠름. 저장되는 데이터가 장기간 보존될 필요가 없기에 redis 사용 적합하다고 판단. 러닝커브까지 생각했을 때 이 방식으로 선택 ThreadMxBean을 사용한 현재 사용 스레드 수 모니터링 및 규칙성 찾기 최적의 쓰레드 수 추론하는 방법 일정 수까지 증가하다가 (어떤 방식으로 스레드 고갈을 알아내는지는 모르겠지만) 스레드가 일정 수 이상 올라가지 않게 됨. => 하한을 정해두고, 같은 값이 나오게 되면 대기열을 실행하도록 구현 개선 방안 생 다만, 한 회차에서 thread의 수를 측정하여 if문을 써야 되는데... 이게 시스템에서 얼마나 리소스를 잡아먹을지는 모르겠다. 대기열 시스템 구현의 종류와 장단점을 표로 정리.. 2024-04-14 데이터베이스 성능 최적화 NoSQL, RDBMS선택 장단점 고려 해서 선택하기 동시성 제어, 트랜잭션 관리 중점 -> RDBMS 확장성, 탐색 성능 -> NoSQL 주요 전략 중 하나는 인덱싱을 효과적으로 사용하는 것 JPA 사용 시 @Index 주석을 사용하여 인덱싱 작업을 쉽게 적용할 수 있다. 추가적으로 여러 조건을 동시에 검색하는 경우에는 여러 개의 인덱스를 묶어서 mutliIndexing 사용 시 추가적인 용량을 사용하지만 더 높은 성능향상을 노릴 수 있다. 캐싱 전략 애플리케이션 수준 캐싱: 정의: 애플리케이션 수준 캐싱에는 자주 액세스하는 데이터를 애플리케이션의 메모리 또는 캐시 저장소 내에 저장하는 작업. 캐시 된 데이터는 여러 요청에서 재사용될 수 있으므로 데이터베이스나 외부 서비스에서 .. 2024-04-07 WIL 이번주동안 진행한 내용: 월: JPA 공부 화: JPA 공부 수: ngrinder local에 설치 및 실행하여 적용하고 스크립트 작성 목: ngrinder 스크립트에서 login 처리 금: pinpoint 러닝 시작 토: pinpoint 실행 완료, elastic apm과 비교 후 elastic apm의 가독성이 좋다고 생각되어 elastic apm 적용, nginrder와 jmeter 둘 다 사용 후, 비교해 보니 각각의 장단점이 있다고 판단됨. 다만 모든 다른 사람들이 로그인할 때의 groovy 스크립트를 어떻게 짜야할지 알 수 없어 당장은 jmeter를 사용하여 테스트를 하고 있다. 추가적으로 생각해볼 내용: elastic apm을 어떻게 지표를 분석해야 되는가? 한글이 깨지는데 해결 방법은? 해.. 2024-03-31 WIL 모니터링의 기본적인 내용에 대한 메모 모니터링: 개발자에게는 예상치 못한 실패가 발생할 수 있다. 효과적인 모니터링을 통해 시스템 문제에 대한 사전 대응이 가능함. 모니터링에는 CPU, 메모리, 연결, 요청 등 다양한 지표를 확인하는 작업이 포함되어있다. 시스템 정보 전송을 위한 다양한 모니터링 도구가 있다. 마이크로미터: 마이크로미터는 애플리케이션 메트릭 파사드(metric facade) 역할을 한다. 애플리케이션 내에서 메트릭(측정 지표)을 마이크로미터가 정한 표준 방법으로 수집, 관리 및 노출하기 위한 통합 인터페이스 역할을 수행한다. 표준화된 방법을 사용하여 애플리케이션 메트릭을 수집하고 제공한다. 로그의 SLF4J와 유사하게 메트릭 수집을 추상화한다. 개발자는 Micrometer의 표준 방법을 .. 2024-03-24-WIL-CI/CD의 개념 CI와 CD는 각각 각각 지속적인 통합과 지속적인 전달을 의미한다. 서로 무언가를 공유하는 개념이 아닌, 연속적으로 작용하는 파이프라인이기 때문에 CI에 대한 이해를 먼저 한 후에, CD로 넘어가도 좋다. CI (Continuous Integration) 지속적인 통합을 의미하는 CI는 프로젝트 변경 사항을 공유 저장소에 통합하는 것을 포함한다. CI의 진행 과정은 다음과 같다. 코드 pull and merge 자신의 코드를 dev 브랜치에서 pull 하여 로컬 환경으로 가져온다. 이후 변경 사향을 확인하고, 필요한 경우 코드를 로컬에서 merge 해준다. 자신의 branch로 push 로컬에서 수정한 코드를 자신의 개인 브랜치에 commit, push 해준다. dev 브랜치에서 자신의 브랜치를 push.. 2024-03-17 WIL - Websocket 에 대해서 Websocket의 활용처 실시간 채팅, 실시간 알림설정, 실시간 모니터링, 문서의 동시편집을 구현하는데 사용한다. HTTP 프로토콜 vs WebSocket windows 개발자 블로그를 참고해보면 알 수 있는데, WebSocket이 무조건 HTTP 프로토콜의 상위호환이 아닌, 각자의 장단점이 있기에 잘 보고 적절한 종속성을 사용하여야 한다. WebSocket 기본 setting build.gradle에 implementation 'org.springframework.boot:spring-boot-starter-websocket' WebSocketConfig.java @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig imp.. 이전 1 2 다음