개인 프로젝트에서 주로 사용되는 CI/CD 구축 방법
·
Server&load/CI CD
개인 프로젝트 (Github Actions)전체적인 흐름장점대부분의 CI/CD 방식은 전체 프로젝트를 통째로 전달하는 방식을 사용함.Git pull을 활용하여 변경된 부분의 프로젝트 코드에 대해서만 업데이트하기 때문에 CI/CD 속도가 빠름.CI/CD 툴로 Github Actions 만 사용하기 때문에 인프라 구조가 간단.단점빌드 작업을 EC2에서 직접 진행하여, 운영하는 서버의 성능에 영향을 미칠 수 있음.Github 계정 정보가 해당 EC2에 저장되어 보안적으로 문제가 있음.주로 사용되는 프로젝트개인 프로젝트에서 CI/CD 를 심플하고 빠르게 적용시키고 싶을 때 활용한다.일반 프로젝트 (Github Actions, SCP)전체적인 흐름장점빌드, 테스트 작업을 Github Actions 에서 진행 후 ..
Github Actions 기본 문법 및 사용 방법 정리
·
Server&load/CI CD
Github Actions 사용 방법폴더/.github/workflows 경로에 yml 파일 생성.name : Github Actions 실행시켜보기on: push: branches: - mainjobs: My-Deploy-Job: runs-on: ubuntu-latest steps: - name: Hello World run: echo "Hello World" # 여러 문장을 출력하기 위해서는 | 사용 - name : 여러 명령어 문장 작성하기 run: | echo "Good" echo "Morning" - name: Github Actions 중 현재 commit 에..
CI/CD 를 배우는 이유
·
Server&load/CI CD
CI/CD 란?CI/CD 란지속적 통합, 지속적 배포라는 의미를 가짐.배포(Deployment) 란?다른 사용자가 인터넷을 통해 사용할 수 있도록 만드는 것을 의미함.CI/CD 를 배우는 이유서비스 운영 중 새 기능을 추가할 때 새 기능에 대한 코드 작성 후 Commit 을 진행.이후 Merge 후 배포를 하는데, 배포할 때 직접 컴퓨터 서버에 접속하여 코드를 다운받아 실행시켜야 함.이와 같은 반복적인 작업을 자동화하기 위한 것이 CI/CDCI/CD 과정개발자가 특정 기능 개발 완료 후 commitbuild 진행Test code 진행 (생략 가능)테스트 통과 시, 실제 서버 컴퓨터에 최신 코드 배포CI/CD 구축 시 사용하는 Github actionsCI/CD 구축 사용 도구Github ActionsJe..
트래픽 증가에 따른 시스템 설계 및 확장 방법
·
Server&load/load test
트래픽 증가에 따른 시스템 설계 및 확장 방법은 병목지점에 따라 성능 개선 방법이 달라진다.시스템 설계 방식가장 간단한 형태EC2서버 한 대에서 프론트엔드, 백엔드, DB 관련 프로그램을 전부 실행시키는 형태의 구성장점하나의 서버에서 모든 리소스를 관리하기 위해 관리 및 조직이 간단함.다양한 리소스를 쓰지 않기 때문에 비용이 적게 나옴.단점데이터베이스가 많은 컴퓨팅 자원을 사용하여, 웹 애플리케이션 성능에 악영향을 줌.위와 같은 단점 때문에 별도 서버를 분리하는 형식을 많이 가져감.데이터베이스 분리웹 서버와 데이터베이스를 분리한 인프라 구성단점인프라 구성에서 트래픽이 많아지면 정적 파일을 제공하는 부분에서 문제 발생 가능성이 큼.정적 파일은 용량이 크므로 컴퓨팅 자원을 많이 소모하여 서버 과부화가 걸릴 ..
병목 지점을 해결하여 성능 개선하기
·
Server&load/load test
가용성가용성이란?시스템이 서비스를 정상적으로 제공할 수 있는 가능성서비스에 장애가 발생할 확률이 극히 적은 시스템을 가용성이 높은 시스템이라고 함.서비스가 다운되는 시간이 긴 시스템을 가용성이 낮은 시스템이라고 함가용성을 높이기 위한 시스템 설계 방법서비스 사용 불가능 시간을 최대한 발생시키지 않게 하고,발생하더라도 시간을 짧게 만들기 위해 시스템 이중화를 사용.시스템 이중화시스템 이중화란?시스템의 일부분을 사용할 수 없게 되어도 다른 시스템을 이용하여 서비스를 계속 이용할 수 있도록 만듬.위 이미지 중 EC2중 하나에서 서비스가 고장났을 때, 또다른 서 버를 통해서 연결할 수 있도록 조치수평적 확장과 수직적 확장수평적 확장특정 시스템 성능을 올리기 위해 시스템 개수를 늘림장점시스템 이중화를 통한 가용성..
병목현상 측정환경 생성 및 병목지점 진단.
·
Server&load/load test
병목현상 측정환경 생성인프라 구성EC2에 부하테스트 툴 세팅하기인스턴스 시작.이름, OS 설정부하테스트를 위한 인스턴스 유형 설정사양이 충분해야 더 많은 부하를 진행할 수 있음.네트워크 설정 편집 후 5665 포트 설정K6가 부하테스트 진행 후 결과 데이터를 실시간으로 보여주는 웹페이지에서 사용.인스턴스에 k6 설치인스턴스 연결 후 아래 명령어 진행.sudo gpg -k && /sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69 && /ech..
모니터링과 메트릭
·
Server&load/load test
모니터링어떤 대상을 지속적으로 감시하는 것을 의미함.모니터링이 필요한 이유병목 지점 파악을 위해 자원 사용량을 알아야 함.EC2, DB, 캐시 등의 사용량이 필요한데, 컴퓨터가 무언가 요청 후 처리를 진행하기 때문.즉, 무언가를 처리하기 위해서는 cpu, memory와 같은 자원이 필요하고, 최대한의 요청을 처리하고 있다면, 자원 사용량이 100%가 됨.특정 자원 사용량이 100%인 컴퓨터가 병목지점임을 알 수 있다.메트릭메트릭은 수치 data. 즉, 측정값을 의미함.즉, cpu, memory와 같은 값을 전부 메트릭이라고 할 수 있다.CPU, Memory, Disk 사용량CPU명령어(코드) 를 해석하고 실행한다.memorycpu 가 작업하기 위해 임시로 사용하는 공간.디스크보다 메모리로부터 데이터를 가..
부하 테스트의 기본 개념
·
Server&load/load test
부하테스트부하 테스트란?시스템이 어느정도의 부하를 버틸 수 있는지 테스트하는 것을 의미함.여기서 시스템이란 전체 인프라를 의미함.부하테스트를 하는 이유서비스를 배포하기 전에, 백엔드 서버가 어느정도 요청을 견딜 수 있는지 부하 테스트를 진행.어느 정도의 트래픽을 감당할 수 있는지 미리 파악함으로써, 부하 상황을 예상하고 대처할 수 있음.즉, 대규모 트래픽 처리를 위한 필수 작업처리량과 시간 지연처리량 (Throughput)서비스가 1초에 처리할 수 있는 트래픽 양단위는 TPS를 사용하며, 1초에 최대 100개의 API를 처리할 수 있따면, 100TPS.RPS 라고도 한다.(Request per second)지연 시간부하테스트에서 Latency 는 요청에 대한 응답시간을 의미한다.서비스에 부하 테스트를 했..