GCP(13)
-
[GCP 원데이] 검색 기능 성능 측정, ElasticSearch
1. 검색 기능 성능 측정 1) 테스트 준비 기존의 Worker 인스턴스로 머신 이미지를 만들어준다. 그리고 만든 이미지로 리전에 관계없이 2개의 새로운 인스턴스를 생성해준다. 그리고 Jenkins 배포 설정을 구성해준다. 설정을 위해서는 추가한 2개의 인스턴스에 SSH 접속을 할 수 있도록 키를 등록해주어야 한다. 하지만 GCP에서 제공하는 메타데이터에 저장을 했기 때문에 추가로 지정해줄 필요는 없다. 2) 성능 측정 Postman을 이용하여 대략 50만건의 데이터에서 4개의 키워드(영화, 재미, 감동, 스토리)를 1회차, 2회차, 3회차, 4회차, 5회차 걸린 시간 찾고 각 키워드의 응답속도 평균값을 구해본다. 여기서 데이터가 50만건 보다 더 많은 양의 데이터가 있다고 가정했을 때, 속도는 구한 값..
2021.05.04 -
[GCP 원데이] RabbitMQ
1. RabbitMq 1) RabbitMQ 글 작성 요청을 저장했다가 DB가 처리할 수 있는 만큼만 처리할 때 사용하고, 글 목록 캐시는 사용자의 글 목록 조회 요청을 매번 DB에서 조회하는 것이 아닌 애플리케이션에 저장을 했다가 그 결과를 반환하도록 한다. 5672 포트는 실제 메시지를 RabbitMQ와 주고받기 위한 포트이며, 15672 포트는 모니터링을 위한 포트이다. docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management 모니터링 페이지의 접속 정보는 다음과 같다. 해당 부분은 Admin 항목에서 관리를 위한 계정을 생성해주는 것이 좋다. Username - guest..
2021.05.03 -
[GCP 원데이] 서버가 죽는 이유, Message Queue
1. 서버가 죽는 이유 1) 서버가 죽었다 란? '서버가 죽었다'라는 표현은 두 가지로 해석이 가능하다. 일부 요청이 실패한다. (대부분의 경우) 모든 요청이 실패한다. 모든 요청이 실패하는 경우에는 네트워크 장애 혹은 서버 자체의 문제로, 높은 트래픽으로 행이 걸렸을 때 발생한다. 이는 자연스럽게 해소할 수도 있으며, 애플리케이션 재시작을 통해 해결할 수도 있다. CPU 바운드 애플리케이션에서는 CPU 사용을 많이 필요로 하는 해시 연산을 다량 요청했을 때 실패했다. DB I/O 애플리케이션에서는 DB를 사용하는 게시글 INSERT와 SELECT를 다량 요청했을 때 실패했다. 이러한 많은 요청이 들어오면, 기다렸다가 처리하여 문제가 발생하지 않는다고 생각할 수 있다. 그럼에도 500에러 혹은 타임 아웃..
2021.05.03 -
[GCP 원데이] I/O 바운드 애플리케이션 (2)
1. I/O 바운드 애플리케이션 1) application.yml 로컬 환경에서의 DB와 서비스 환경에서의 DB는 다르다. 이를 위해 두 환경에서 동작할 수 있도록 수정해주어야한다. 이러한 기능을 profile이라고 한다. 'application.properties' 파일을 이용할 경우, 여러 개의 파일로 나눌 수 있다. 단, 특정 profile이 활성화되지 않을 경우 'application-default.properties'가 기본적으로 로딩된다. 'application.yml' 파일을 이용할 경우, 한 파일에 profile 설정이 가능하다. 하지만 @PropertySource 어노테이션을 통해 값을 읽어 올 수 없다는 단점이 있다. 각각의 profile은 '---'로 구분된다. spring: prof..
2021.05.03 -
[GCP 원데이] I/O 바운드 애플리케이션 (1)
1. I/O 바운드 애플리케이션 1) I/O 바운드 애플리케이션성능 향상 서버 스케일 아웃으로 인해 하드디스크도 서버와 함께 늘어날 것이고, 자기 하드디스크에 있는 데이터로만 처리하면 충분히 성능을 향상 시킬 수 있다. 하지만, 각자의 하드디스크의 데이터를 실시간으로 공유하기 어렵다는 문제를 가지고 있다. 따라서 서로 공유할 수 있는 저장소(DB)를 사용한다. 하지만 문제는 서버를 아무리 늘려도 DB의 성능이 낮다면 전체 서비스의 성능은 DB와 동일해진다(병목현상). 이를 해결하기 위해서는 DB의 성능에 의존적인 부분을 줄이고 전체 서비스의 성능을 향상시켜 더 많은 트래픽을 처리할 수 있도록 만들어야한다. 파일 I/O 바운드일 경우 서버를 늘려 성능을 올릴 수 있지만 DB I/O 바운드 애플리케이션은 ..
2021.05.01 -
[GCP 원데이] 무중단 배포 환경 (Git, Webhook)
1. Git 1) Git 이란 ? 소프트웨어 개발 과정에서 중간 버전별 코드 상태를 기록할 수 있다. 이를 형상관리툴이라고 하며, Git은 가장 인기있는 툴이다. Git에서는 소프트웨어의 버전을 커밋 단위로 저장하고 여러 개의 줄기(Branch)를 만들어 여러 명에서 함께 개발이 가능하다. 2) 디렉토리, 파일 생성 'git-practice' 디렉토리와 그 하위에 'file1.js' 파일을 생성해준다. 그리고 터미널 창에서 해당 파일을 실행하여 동작을 확인한다. 3) Git Repository 생성 및 커밋 // 깃 폴더 생성 git init // 깃 레포지토리 연동 git remote add origin [GitHub Repository URL] // 깃 추가 git add . // 깃 커밋 메시지 설..
2021.04.26