본문 바로가기

전체 글

(201)
[실전 프로젝트] 5주차 - 1 부하 테스트 서버의 Thread Pool 늘리기 동시에 10000개의 요청을 보냈을 때, 8000개 부근에서 계속해서 에러가 발생 -> 확인을 해보니 스프링 기본 max-connections가 8192개 여서 8192개 이상의 스레드가 생성되지 못해서 오류가 발생하는 것으로 예상해서 max-connections를 수정해서 테스트를 진행을 해보기로 함 max-connections를10000으로 늘리고 테스트 진행 -> 오히려 스레드 간의 콘텍스트 스위칭이 발생하여 오버헤드가 발생해 더 느려짐 스레드 문제가 아닌 것 같아 좀 더 다양한 정보를 보기 위해 모니터링 프로그램 사용을 고려해보았습니다. 프로메테우스 애플리케이션에서 발생한 메트릭을 그 순간만 확인하는 것이 아니라 과거 이력까지 함께 확인하려면 메트릭..
[실전 프로젝트] 4주차 - 2 부하 테스트 이제 기본적인 기능들은 다 추가하고 해당 기능들을 부하 테스트를 하면서 성능이 어느정도 나오는지 확인 후 병목구간이나 문제가 되는 지점들을 수정하면서 성능에 대한 기록들을 하기 시작을 했다. 주로 나눈 구간은 가장 중요하다고 생각하는 주문API를 중심으로 테스트를 하고 이후에 검색 및 조회 API들을 테스트 할 예정이다. 확인하는 방법은 먼저 로컬에서 부하 테스트를 진행해보고 너무 느리지 않으면 서버에 올려서 테스트를 진행하였는데, 생각보다 로컬과 서버간의 차이가 많이 났고, 특히 로컬 DB일 때와 AWS RDS를 사용할 때의 차이가 많이 나서 당황스러웠다. 따로 RDS를 설정해주는 부분이 있는건지 아니면 사용하고 있는 인스턴스의 성능이 문제인건지는 테스트를 좀 더 진행을 해보면서 확인을 해..
[실전 프로젝트] 4주차 - 1 Kafka 적용 Kafka 주문 결과를 우선적으로 반환 후 재고 업데이트, 주문 결과 저장 등 이후에 수행 되어도 사용자에게 큰 상관이 없는 로직들을 비동기 처리함으로 주문로직에 대한 성능을 개선했습니다. 주문 로직을 따로 데이터 스트림 구조로 만들어 성능의 저하 없이 동시에 지속적인 생산과 소비를 할 수 있습니다. 주문 API 단계 장바구니 조회 → 장바구니 구매 (담은 모든 상품) → 이벤트 상품 확인 → 주문 생성 → 상품 재고 관리 → 주문 결과 확정 Kafka 적용 카프카를 사용하지 않으면 모든 단계를 거친 후 사용자에게 응답을 해주는데, 카프카를 사용하면서 사용자들이 주문 후, 주문이 생성되고 주문 결과가 “주문 중” 으로 넘어가고 상품 재고 관리, 주문 결과 확정 과정을 비동기적으로 처리하여..
[실전 프로젝트] 3주차 - 2 Kafka 학습 및 적용 고려해보기 카프카란? 분산 이벤트 스트리밍 플랫폼, 고성능 강조 TCP 네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 구성된 분산 시스템 이벤트 스프리밍이란 ? 데이터베이스, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어 애플리케이션과 같은 이벤트 소스에서 이벤트 스트림 형태로 실시간으로 데이터를 캡처하는 방식으로 나중에 검색할 수 있도록 이러한 이벤트 스트림을 영구적으로 저장한다. 상시 접속 세상을 위한 기술 이벤트 스트리밍 사용 분야 증권거래소, 은행, 보험 등 결제 및 금융거래를 실시간으로 처리하기 위해. 물류 및 자동차 산업 등에서 자동차, 트럭, 차량 및 배송을 실시간으로 추적하고 모니터링합니다. 공장, 풍력 단지 등 IoT 장치나 기타 장비에서 센서 데이터..
[실전 프로젝트] 3주차 - 1 Jmeter 테스트 Apache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구 JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있습니다. Stepping Thread Group [ this group will start ] 총 몇 개의 Thread를 발생할 것인가? [ Next, add ] 몇 개씩 더해질 것인가 ? [ threads every ] 몇 초 후에 더해질 것인가? [ using ramp-up ] Next add되는 데 걸리는 시간 [ Then hold load for ] 몇 초 동안 최대 Thread를 유지할 것인가? [ Fi..
[실전 프로젝트] 2주차 - 2 Unit Test 테스트 코드를 작성을 하는 데 할 때마다 테스트 코드를 제대로 작성 중인지 이게 맞는 건지가 헷갈리는 부분이 가장 많은 것 같다. 그래도 하다 보니 처음 보다는 먼가 감이 잡히는 것 같기는 하다. 일단 먼저 Repository에서 사용하는 것 들을 테스트 해서 DB의 신뢰성을 먼저 만들고 Service에서 기능별로 분기점마다 예상 값이 제대로 오는지 확인을 하고 Controller에서 요청처리가 정상적으로 날아가는지 확인하는 방법으로 단위테스트를 작성했다. 테스트 코드는 계속 코드를 작성하면서 꾸준히 확인 해봐야되는 부분인 것 같다.
[실전 프로젝트] 2주차 - 1 Logback 적용 https://logback.qos.ch/documentation.html Documentation Logback documentation Below is a list of logback-related documentation currently available. Source code related documentation: Articles and Presentations In french logback.qos.ch logback-spring.xml 추가 1. 기본 파일 생성해 configuration 태그를 만들어준다. 2. 여러 번 사용할 변수들을 선언해준다. timestamp : 현재시간을 key값을 이용해서 사용할 수 있도록 선언해 사용한다. property : name과 va..
[실전 프로젝트] 1주차 - 2 Docker를 이용한 CI / CD 구현 EC2 서버에 Docker 설치 1. apt를 사용해 도커를 설치할 준비를 한다. sudo apt update 2. 도커 설치전 필요한 패키지 설치 ca-certificates : 인증서 관련 모듈 curl : HTTP 등을 통해 파일을 내려받기 위한 모듈 gnupg : 디지털 서명을 사용하기 위한 모듈 lsb-release : 리눅스 배포판을 식별하는 데 사용하는 모듈 sudo apt-get install ca-certificates curl gnupg lsb-release 3. GPG 키 추가 sudo -fsSl https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 4. 리포지토리 추가 echo ..