RabbitMQ
2023. 4. 2. 17:06
개발 지식/DevOps
RabbitMQ를 통한 기대 효과 - 이전 글에서 설명했던 DB 병목 현상 해결 - 글 목록 데이터를 캐시로 저장하여 DB에 부담을 줄여줌 그럼 Message Queue 중 하나인 RabbitMQ를 사용해보자 0. I/O bound 어플리케이션 실행 이전 글에서 학습했던 내용을 실제 코드에 적용해보자 2023.04.02 - [DevOps] - DB I/O bound 애플리케이션 + Message Queue DB I/O bound 애플리케이션 + Message Queue 0. DB I/O bound 애플리케이션 성능 향상 방법 하드디스크를 많이 사용하는 파일 I/O bound 애플리케이션이라면 서버를 늘려서 성능 향상이 가능하다 하지만 보통은 DB를 사용하는 경우가 많고, DB I/O bo tong-dev..
DB I/O bound 애플리케이션 + Message Queue
2023. 4. 2. 13:13
개발 지식/DevOps
0. DB I/O bound 애플리케이션 성능 향상 방법 하드디스크를 많이 사용하는 파일 I/O bound 애플리케이션이라면 서버를 늘려서 성능 향상이 가능하다 하지만 보통은 DB를 사용하는 경우가 많고, DB I/O bound 애플리케이션의 경우 DB 성능에 의존적이기 때문에 애플리케이션의 서버를 늘려도 DB 병목현상을 해결 할 수 없어서 성능향상이 되지 않을 것 이다 요청이 많이 발생하게 될 경우 즉, 트래픽이 크게 증가하는 경우 서버가 다운되는 현상을 경험하게 된다 이를 막기 위한 방법 중 하나가 Message Queue를 활용하는 방법이다 1. 톰캣 요청 처리 구조 요청이 들어올 경우 우선 큐에 적재 (톰캣 기본 설정 - 큐 사이즈: 100, 스레드 사이즈: 200) 큐에 들어간 요청이 놀고 있는..
Nginx를 통한 로드밸런싱 + 무중단 배포
2023. 3. 16. 00:37
개발 지식/DevOps
GCP에 접속해 보니 젠킨스 서버가...."vm에서 암호화폐 채굴로 인해 무료 서비스 약관을 위반하여 vm 인스턴스가 정지되었습니다."라는 안내와 함께 서버가 중지되어 있었다.. 암호화폐 채굴한 적 없고 젠킨스 공부하고 있었다고 항소요청을 하니 5분도 안 돼서 정지를 풀어줬다 0. 목표 및 테스트 환경 Nginx로 로드밸런싱하여 무중단으로 배포할 수 있는 환경을 구성 로드밸런싱을 진행하기 전 서버를 여러 개로 실행해야 하기 때문에 동일한 환경의 서버를 2개 더 생성했다 GCP의 경우 머신이미지 기능을 활용하면 간단하게 서버 복사가 가능하다 CentOS로 진행 - Jenkins를 실행시킬 jenkins-test-1 - Docker 컨테이너를 띄울 worker-test-1, 2, 3 - nginx를 실행시킬..
Jenkins 배포 환경 구축
2023. 3. 11. 21:46
개발 지식/DevOps
0. 목표 및 테스트 환경 Jenkins 세팅 SSH를 통한 배포 dockerized 애플리케이션 배포 자동화 GCP 클라우드 서버를 통해 진행! CentOS로 진행 - Jenkins를 실행시킬 jenkins-test-1 - Docker 컨테이너를 띄울 worker-test-1 2개의 서버를 생성하였음 1. 관련 파일 설치 - wget, maven(Java 포함), git, docker 설치 sudo yum install wget sudo yum install maven sudo yum install git sudo yum install docker 2. Jenkins 설치 Jenkins 설치 시 패키지를 먼저 추가해 준 다음 설치를 진행해야 한다 sudo wget -O /etc/yum.repos.d/j..
간단한 Docker 환경 구축하기
2023. 3. 11. 18:44
개발 지식/DevOps
0. Docker 환경의 애플리케이션 실행 과정 Docker File 빌드 시 Docker Image가 생성됨. Docker Image를 저장소에 푸쉬하면 Docker Image가 저장소에 업로드 됨. 풀을 통해 Docker Image 다운로드 다운로드된 Docker Image를 런하여 컨테이너 실행 1. Docker File 작성 https://spring.io/guides/topicals/spring-boot-docker/ Spring | Home Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform. spring.io Spring Boot 에서 제공하는 샘플 코드를..
CPU bound Test
2023. 3. 8. 23:11
개발 지식/DevOps
1. 기본 용어 정의 Burst 어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일 CPU Burst 프로세스가 CPU에서 명령을 실행하는 시간 I/O Burst 프로세스가 I/O(Input/Output) 를 요청한 뒤 기다리는 시간 CPU bound 프로세스 CPU burst가 많은 프로세스 주로 행렬 곱이나 고속 연산을 할 때 CPU 성능에 의해 작업 속도가 결정됨 ex) 머신러닝 프로그램 I/O bound 프로세스 CPU burst가 많은 프로세스 파일 쓰기, 디스크 작업, 네트워크 통신을 할 때 주로 나타남 작업(다른 시스템과 통신) 병목에 의해 작업 속도가 결정됨 ex) 백엔드 API 서버 2. CPU bound 애플리케이션 Hash 연산을 반복하여 CPU를 극단적으로 사용하는 애플리케이션을 통..
서버 메모리 누수 현상 처리 과정 정리
2022. 2. 24. 21:32
개발 지식/DevOps
현재 AWS 환경으로 서버를 운영 중에 있는데 메모리 초과로 서버가 계속 다운되는 현상이 지속적으로 발견되었다 워낙 사양이 낮아서 그런가 했지만 서버 상황을 모니터링을 하다 보니 메모리가 계속해서 누적되는 게 원인인 것 같았다 타 부서에서 사용하는 서버인 데다가 python 환경이어서 지식이 아예 없는 상황이었다.. 우선은 python을 다뤄본 적이 없어서 그 부분부터 파악이 필요했다 1. 파이썬의 메모리 관리 Python에서는 GC(Garbage Collection)와 레퍼런스 카운트(Reference Counts)에 의해 메모리 관리를 하고 있지만, 순환 참조(자기 자신을 참조)와 같은 코드가 있으면 메모리 누수가 발생할 수 있음. 2. 테스트 계획 조사한 내용에 의하면 소스 코드가 문제인가 싶어서 ..