반응형

DevOps 26

ArgoCD 란?

ArgoCD ArgoCD는 GitOps 기반의 Continuous Delivery(CD) 도구로, Kubernetes 클러스터 내의 애플리케이션 배포 및 관리를 자동화합니다. 애플리케이션의 상태를 Git 저장소에 정의하고, GitOps 워크플로우를 통해 클러스터에 반영됩니다. 강력한 UI와 CLI를 제공하여 애플리케이션의 배포, 롤백, 상태 확인 등을 간편하게 수행할 수 있습니다. ArgoCD 사용을 위한 기본 지식 Kubernetes(K8s) => ArgoCD는 Kubernetes 클러스터 내에서 동작하므로, Pod, Deployment, Service 등의 기본 용어와 개념 이해 GitOps 워크플로우와 Git의 기본 사용 => 애플리케이션의 원하는 상태를 Git 저장소에 정의하고, GitOps 워크..

DevOps/DevOps 2023.08.17

CI/CD 툴 종류 및 비교 (Jenkins, AWS CodeBuild, ArgoCD, Github Actions)

CI/CD(Continuous Integration/Continuous Deployment) => 소프트웨어 개발 프로세스에서 자동화된 빌드, 테스트 배포를 통해 개발자들이 더욱 빠르고 안정적인 소프트웨어를 제공할 수 있도록 해줌 대표적인 CI/CD 툴 1. Jenkins 특징: Jenkins는 오픈소스 CI/CD 도구로서 매우 유연하고 확장 가능한 플러그인 시스템을 가지고 있습니다. 다양한 플러그인을 통해 다양한 작업들을 지원하며, 커뮤니티의 활발한 지원과 풍부한 자료가 있습니다. 장점: 커스텀 가능성이 높고, 다양한 통합 및 확장 기능을 제공합니다. 대부분의 환경과 툴들과 통합이 가능합니다. 단점: 설정 및 관리가 복잡할 수 있고, 초기 설정에 시간이 걸릴 수 있습니다. 2. AWS CodeBuild..

DevOps/DevOps 2023.08.17

부하 테스트 계획 및 도구

부하 테스트 진행 전 서비스 수준 목표(SLO) 설정 Latency에 중점을 둔 SLO 예시 GET 호출의 90%는 1ms 이내에 완료해야 한다. GET 호출의 99%는 10ms 이내에 완료해야 한다. GET 호출의 99.9%는 100ms 이내에 완료해야 한다. Throughput에 중점을 둔 SLO 예시 (1일 기준으로의 RPS 계산) - 순간적으로 요청이 치솟는 피크(peak) 트래픽에서의 처리량을 바탕으로 함 DAU(Daily Active User : 1일 접속자 수 ) : 5만명 1명당 편균 접속 횟수 : 20회 1일 평균 접속 수에 대한 피크 트래픽 배율 : 3배 (보통 평균의 2~3배를 곱함) 안전 계수 (얼마만큼 넉넉하게 프로비저닝 할 것인가) : 3배 하루 = 86,400초 50000 x ..

병목현상이란? (원인과 대책)

병목현상 이란? - 시스템 내에서 전체적인 처리 속도를 떨어뜨리게 되는 특정한 부분을 가리키는 용어 - 시스템의 CPU나 메모리, 디스크 등의 자원 중 하나가 다른 자원들에 비해 처리 속도가 느려서, 전체적인 성능을 제한하는 경우를 말함 - 효율적인 자원분배 및 최적화를 고려해야함 응답성능에 대한 병목현상 원인 - 네트워크 대역폭 부족 - 하드웨어 자원 부족 - 어플리케이션 설계의 문제 - 데이터베이스 부하 Throughput 개선 - 시스템의 흐름을 고속도로에 비유해보자 - 대구와 부산 사이에 병목현상이 발생하고 있다. - 통행량을 늘려 병목현상을 해결한다. - 처리량에 대해서 네트워크 대역폭이나 부족한 자원을 증가시켜 처리할 수 있다. ** Throughtput의 개선이 Latency 개선으로 이어진..

가용성 및 확장성 평가 / 부하 테스트 (Throughtput)

가용성과 확장성을 염두하여 시스템을 설계하는 것이 중요하다. 다수의 노드를 가진 분산 시스템, 또한 서버리스 아키텍처 등을 통해 가용성과 확장성 확보가 가능하다. 가용성(Availability)이란? 가용성이란 - 시스템이 정상적으로 사용 가능한 정도 - uptime / (uptime + downtime) => 정상가동시간(uptime), 사용 불가 시간(downtime), 합친 전체 사용 시간 (uptime + downtime) - ex) 가용성 99.95% = 약 1년에 4시간 22분의 다운타임을 갖는다. * 단일 장애점 (Single Point of Failure)을 없애야 한다. ** 어떤 한 노드에서 장애가 발생해도, 동일한 처리 능력을 가진 다른 노드로 대체 될 수 있어야 한다. => 시스템 ..

Project 3 : 마이크로서비스 DAY-3 (자동 재고 확보 시스템 을 위한 MSA 구성)

프로젝트 개요 AWS 클라우드 환경을 기반으로 하는 느슨하게 연결된 (loosely coupled) 어플리케이션 아키텍처에 대한 이해 프로젝트 요구사항 및 시나리오 프로젝트 명 : 을 위한 MSA 구성 Day 3 목표 Factory-API 문서 Factory-API Document Method - POST Path - /api/manufactures Request Body Schema : application/json { MessageGroupId : string(메시지 그룹 아이디) //"stock-arrival-group", MessageAttributeProductId : string(추가 생산이 필요한 제품 아이디), MessageAttributeProductCnt : string(추가 생산 요청..

DevOps/프로젝트 2023.02.22

Project 3 : 마이크로서비스 DAY-2 (자동 재고 확보 시스템 을 위한 MSA 구성)

프로젝트 개요 AWS 클라우드 환경을 기반으로 하는 느슨하게 연결된 (loosely coupled) 어플리케이션 아키텍처에 대한 이해 프로젝트 요구사항 및 시나리오 프로젝트 명 : 을 위한 MSA 구성 Day 2 목표 메시지 큐의 Pub/Sub 패턴과 Producer/Consumer 패턴의 차이를 이해한다 DB와 서버와의 통신이 가능하도록 연결한다 특정 상황에서 SNS, SQS로 메세지가 전달되도록 시스템을 구성한다 SQS에 들어온 메세지를 레거시 시스템(Factory API)으로 전달하는 시스템을 구성한다 레거시 시스템(Factory API)의 콜백 대상이되는 리소스를 생성해 데이터베이스에 접근 할 수 있게 한다 Step 1 : Lambda 서버 (Sales API) - DB 연결 #1. 제공 받은 레..

DevOps/프로젝트 2023.02.21

Project 3 : 마이크로서비스 DAY-1 (튜토리얼)

프로젝트 개요 AWS 클라우드 환경을 기반으로 하는 느슨하게 연결된 (loosely coupled) 어플리케이션 아키텍처에 대한 이해 최소 요구 사항 Serverless 를 이용한 메시지 대기열 활용 이해 및 구현 요구사항에 따른 어플리케이션과 인프라 구현 문제사항 해결을 위한 추가 리소스 생성 -> DLQ, Legacy 시스템 성능문제 해결, SES 아키텍처 다이어그램 제작 Advanced 인프라 관리와 재사용성을 위한 IaC 활용 -> Terraform을 통한 리소스생성 프로젝트 요구사항 및 시나리오 프로젝트 명 : 을 위한 MSA 구성 시나리오 는 온라인으로 도너츠를 판매합니다. 웹사이트 통해서 주문 버튼을 누르는 것으로 구매(Sales API)가 가능합니다. 창고에 재고가 있다면 재고가 감소하고 ..

DevOps/프로젝트 2023.02.18

도메인 주도 설계 (DDD, Domain-Driven Design, 분산화 응용 프로그램 설계, 마이크로서비스, miro)

도메인 이란? - 지식, 영향력 또는 활동 영역 - 개발 분야에서는 소프트웨어로 해결하려는 문제의 영역을 의미함 도메인 지식 이란? - 어떤 산업 또는 분야를 이해하기 위해 필요한 지식 도메인을 개념적으로 표현하는 방법 - 객체지향 설계, ERD 등 도메인 주도 설계의 주요 용어 - 보편언어 (ubiquitous language) => 도메인의 특정 업무와 관련된 사람들 사이에서 통용되는 개념 - 한정된 맥락 (bounded context) => 한정된 맥락이 없다면 클래스 이름 설계의 어려움, 클래스가 비대해질 위험, 단일 책임 원칙 위배 가능성 높음, 의존 관계 신경써야함 등의 단점이 있음 DDD 가 제안하는 해결책 - 서비스를 나눔 - 데이터 베이스도 나눔 (마이크로 서비스와 DDD는 같지 않으며,..

DevOps/DevOps 2023.02.16

독립적 서비스 구성 - AWS Lambda, API Gateway

AWS Lambda 란? - AWS 가 제공하는 서버리스 Faas 솔루션 - 함수의 인스턴스를 실행하여 이벤트 처리 Faas 란? - 개발자가 자체 인프라를 유지관리할 필요 없이 어플리케이션 패키지를 빌드,실행,관리 할 수 있게 해주는 일종의 클라우드 컴퓨팅 서비스 - stateless 컨테이너에서 실행되는 이벤트 기반 컴퓨팅 실행 모델 - 자체 서버 시스템이나 수명이 긴 서버 어플리케이션을 관리하지 않고 백앤드 코드를 실행함 => 서버를 프로비저닝 하거나 관리할 필요 없이 작성한 코드를 백앤드 서비스로서 배포할 수 있게 해줌 - 런타임(node.js, Java 등)에 대한 사전 준비가 필요하지 않음 - 상태 및 실행 기간과 관련하여 상당한 아키텍처 제한이 있음 - 수평적 확장은 완전 자동적, 탄력적이며..

DevOps/DevOps 2023.02.02

API 디자인, 프로세스 간 통신(Inter-process communication, IPC ,마이크로서비스 간의 통신)

프로세스 간의 통신 - 서비스와 서비스간의 통신을 위해 인터페이스가 필요 - 인터페이스의 요구 방식 대로 커뮤니케이션 - 서버/클라이언트 아키텍처에서 HTTP 프로토콜을 이용하여 메소드 및 엔드포인트로 구성된 REST API를 이용하여 통신 동기/비동기 - HTTP 프로토콜은 기본적으로 TCP or UDP 연결을 만든다 -> 요청에 따라 즉시 응답이 오는 형태이므로 동기적 응답 - 비동기 서비스의 작업은 단방향 알림으로 푸쉬알림의 예가 있음 1:1 및 다대다 통신 - 뉴스에 대한 구독 형식 서비스는 1:1이 아닌 1대다 커뮤니케이션 방식을 취합니다 - HTTP는 1:1 통신이다 -> 여러 클라이언트에게 동시에 응답을 전달하지 않음 -> 여러번의 1:1 커뮤니케이션임 데이터 교환 포맷 JSON - JSON..

DevOps/DevOps 2023.02.01

마이크로서비스 란? (구조 및 특징, 아키텍처 구현, 서버리스)

마이크로서비스 - 마이크로 아키텍처 라고도 함 - 유지보수에 유리하고, 테스트 가능해야 함 - 느슨하게 결합되어야 함 => 시간이 지남에 따라 서비스가 복잡해지면 더 작은 서비스로 분할할 수 있음 - 독립적으로 배포 가능함 => 다른 서비스의 기능에 영향을 주지 않음 => 해당 서비스의 코드 및 구현을 다른 서비스와 공유할 필요 없음 - 비즈니스 역량을 중심으로 구성해야 함 => 모든 규모에 부합하는 접근 방식이 아닌 각 팀별 특정 문제에 대한 적합한 도구를 자유롭게 선택 가능 - 작은 팀에 의해 소유됨 => 소규모 컨텍스트 내에서 활동하며 더 독립적이면서 신속한 업무처리 가능, 개발주기 시간 단축 서비스로서의 컴포넌트화 컴포넌트 - 독립적으로 대체하거나 업그레이드 가능한 소프트웨어 단위 컴포넌트화 - ..

DevOps/DevOps 2023.01.30

[Mac OS]Mac OS Proxy 서버 구동 (nginx)

Mac OS에서 nginx 구동 관련 포스팅 https://chance-story.tistory.com/12 Mac 환경에서 nginx 실행하기 nginx란 - HTTP 기반의 서버를 생성하는 소프트웨어 - 웹 서버를 생성 및 정적 웹페이지 호스팅 - Event-Driven 구조로 동작한다 (고정된 프로세스 사용) - 적은 자원으로 효율적인 운용이 가능하다는 장 chance-story.tistory.com 목표 나의 컴퓨터를 리버스 프록시 서버로 만들어 보고자 한다. 클라이언트 : postman 프록시 서버 : nginx 원 서버 : 미리 구축해놓은 서버 사용 실습 1. Mac OS 기준 /opt/homebrew/etc/nginx/nginx.conf 파일 내 프록시 서버 구축 server { listen..

DevOps/DevOps 2022.12.30

MLOps 란? (DevOps 와 비교)

MLOps 란? - Machine Learning Operations - 인공지능, 머신러닝 기반 솔루션을 개발, 배포, 운영 하기 위한 전반적인 절차 - 개발과 운영을 따로 나누지 않고 개발의 생산성과 운영의 안정성을 최적화하는 DevOps를 머신러닝 시스템에 적용한 것 - MLOps 파이프 라인에서 모델 검증 및 제공/배포 단계 = DevOps 에서 애플리케이션을 테스트하고 배포하는 과정과 흡사 머신러닝을 도입한 데이터 처리 파이프라인 1. 데이터 분석 - 데이터 분석을 위한 탐색적 데이터 분석 수행 (EDA, Exploratory Data Analysis) 2. 데이터 준비 (추출 및 정제) - 데이터 추출 및 정제 -> 변환, 집합, 중복제거 등 과정 포함 3. 모델 학습 및 튜닝 - 다양한 알고..

DevOps/DevOps 2022.12.21
반응형