목록DevOps (186)
devops
쿠버네티스 오픈소스로 만들어진 컨테이너 오케스트레이션 도구 컨테이너화된 어플리케이션을 자동 배포, 스케일링하는 기능 등을 제공한다. 각기 다른 환경(온프레미스서버, VM, 클라우드)에 대응할 수 있다. 쿠버네티스에 적합하지 않는 환경 여러 단계로 나뉘어지지않은 모놀리식 아키텍처에는 적합하지 않다. (모놀리식은 MSA로 분해하는 것이 먼저) 컨테이너 수가 적은 경우 적합하지 않다.(docker compose만으로도 관리 가능) 단순한 아키텍처에 스케일링이 불필요한 경우 적합하지 않다. 쿠버네티스에 적합한 환경 마이크로서비스를 컨테이너 방식으로 운영하는 조직이 확장성을 고려할 때 무중단 서비스, 고가용성을 제공해야 할 때 자가 치유 및 배치 실행, 로드 밸런싱, 구성 관리 등 기능들이 필요할 때 사실 AWS..
Terraform Backend Terraform의 State 파일을 저장하는 위치와 어디서 가져올지에 대한 설정이다. 대체로 로컬에 저장하지만 설정에 따라서 s3, consul 등 다양한 backend type을 사용할 수 있다. Backend를 사용하는 이유 1) 대체로 Terraform 코드는 혼자 작성하지 않는다. 인프라를 변경하는 것은 민감하기 때문에 원격 저장소를 활용해서 같은 state를 사용하는 것을 막을 수 있다. 2) 로컬 스토리지에 저장하면 유실의 위험이 있다. 그래서 S3와 같은 원격 저장소를 활용하기도 한다. *주로 s3를 많이 사용한다. terraform { backend "s3" { bucket = "terraform-s3-bucket" # s3 bucket 이름 key = "..
간단한 기본 개념 복습 VPC : 사용자의 AWS 계정 전용의 가상 네트워크 서브넷(Subnet) : VPC의 IP 주소 범위 라우팅 테이블(Route Table) : 네트워크 트래픽을 전달할 위치 결정 인터넷 게이트웨이(Internet Gateway) : VPC의 리소스와 인터넷의 통신을 위해 사용되므로 VPC에 연결 Internet Gateway vs Nat Gateway IGW : VPC와 인터넷간의 통신을 활성화 NAT : 프라이빗 서브넷의 인스턴스가 인터넷에 연결할 수 있도록 해줌, 인터넷에서 원치않는 인바운드 연결 수신 차단 NAT는 위치가 Public Subnet에 있어야하며, 연결을 Private Subnet과 한다. EIP 생성이 필요하며 생성 및 삭제에 시간이 소요되는 편이다. *서브넷..
이용욱님 삼성전자 / Cloud 운영 그룹 Dev, DA/DBA, TechOps, DevOps, SRE IaC(Infrastructure as Code) 인프라 생성, 설정 관리를 코드로 작업 -> 반복 재현성, 이력관리 가능 인프라 코드와 설정 문서를 한번에 할 수 있는 장점이 있음 빠른 공유와 병렬 작업이 가능 정적인 인프라는 Terraform으로 운영, 수정이 잦은 배포(Auto Scaling Group, Image)의 경우 Ansible 사용 Spinnaker는 파이프라인부터 배포 설정까지 하는 데 주로 사용 주로 Spinnaker와 Terraform을 큰 축으로 가져가고 있음 쿠버네티스는 배포 스펙 지정에 편리해서 사용 Terraform 1. 관리 범위 쪼개기 Communication cost ..
Terraform 기본 구성 Provider : 테라폼으로 생성할 인프라 종류(AWS, GCP 등) Resource : 인프라 자원, AWS에서는 EC2, S3와 같은 인프라 내부 서비스로 생성되는 자원 State : 테라폼으로 생성한 자원 상태. 파일 형태로 남아있어, 테라폼 명령어를 실행한 결과물 Output : 테라폼으로 만든 자원을 변수 형태로 State에 저장 Module : 공통적으로 사용할 수 있는 코드들을 모듈 형태로 정의. Remote : 다른 경로의 State를 참조하는 것으로 Ouptut 변수를 불러 올때 사용 Terraform 기본 명령어 init : 테라폼 명령어 사용을 위한 설정 실행. plan : 테라폼으로 작성한 코드 실행시 만들어질 결과 예측, 가장 많이 사용 apply :..
DevOps의 주요 특징은 '자동화'다. 코드형 인프라(IaC)는 설정을 코드로 작성하기 때문에 클라우드 인프라스트럭처의 생성, 수정, 삭제를 자동화할 수 있다. 서버, 데이터베이스, 네트워크, 배포 프로세스, 테스트 거의 모든 과정을 코드로 관리할 수 있다. 클라우드 네이티브 환경에서 운영은 모두 코드로 대체된다. 이는 IaC가 인프라스트럭처의 설계도가 될 수 있다는 의미다. IaC의 장점 인프라 생성이 자동화되므로, 오류가 덜 발생하고 안전하다. IaC는 쉽게 공유되고 버전 관리에도 용이하다. 코드와 현재 상태를 비교하여 추후 인프라 상태의 변경에 따르는 위험을 분석, 검증할 수 있다. 배포 과정에 개발자, 관리자 모두 배포하고 통제가능한 환경이 만들어진다. 프로비저닝, 배포, 오케스트레이션 프로비저..
immutable Infrastructure(불변적 인프라스트럭처) 불변의 인프라스트럭처의 정의는 서버가 설치된 이후 절대 변경되지 않는 형태의 인프라다. 여기서 수정은 기존의 서버를 제거하고 새롭게 만드는 것을 의미하는 것이다. 여기서 '멱등성의 법칙'이 적용된다. * 멱등성 법칙 : 같은 작업을 여러 번해도 결과가 동일, 한번 설정된 서버는 수정 없이 파기되므로 멱등성 보자아 특징 각 서버의 버전은 서로 독립적이며, 두 가지 버전을 실행할 수 없다. 변경이 필요할 때 새버전의 서버를 생성하기 때문에 버전의 문제를 추적할 수 있다. 각 서버의 구성이 일관되기 때문에 다른 서버를 테스트하고 롤아웃하는 것이 쉽다. 서버가 동일하게 유지되므로 예측 가능성을 높일 수 있다. 클라우드 기술과 같으느 상호 의존적..
Lambda AWS가 제공하는 서버리스 FaaS 솔루션이다. 함수의 인스턴스를 실행하여 이벤트를 처리한다. FaaS FaaS는 자체 서버시스템이나, 수명이 긴 서버 어플리케이션을 관리하지 않고 백엔드 코드만 실행하는 것 런타임에 대한 사전 세팅 및 준비가 노필요 기능에는 상태 및 실행 기간과 관련 아키텍처 제한이 많다. 수평적 확장은 완전 자동이며 탄력적으로 공급자가 관리할 수 있다. 기능은 일반적으로 공급자가 정의한 이벤트 유형에 의해서 트리거된다. Lambda 특징 서버를 프로비저닝하거나 관리할 필요없다. 작성한 코드를 백엔드 서비스로 배포할 수 있다. Lambda를 실행하려면 어플리케이션이나 백엔드 서비스의 코드를 작성하고 이벤트 트리거만 정의하면 된다.(Amazon S3 업로드, Dynamo DB..
Apache Kafka 실시간 스트리밍 데이터 파이프라인 및 애플리케이션을 구축하기 위한 오픈 소스, 고성능, 내결함성 및 확장 가능한 플랫폼이다. Apache Kafka는 스트리밍 데이터 저장소다. 스트리밍 데이터를 생성하는 애플리케이션(생산자)을 데이터 저장소에서 스트리밍 데이터를 소비하는 애플리케이션(소비자)과 데이터 저장소로 분리한다. Apache Kafka의 분산 특성으로 인해 확장이 가능하고 노드 장애 시 고가용성을 제공한다. 주로 스트리밍 데이터를 분석하고 이에 대응하는 애플리케이션의 데이터 소스로 Apache Kafka를 사용한다. Apache Kafka 는 레코드, 주제, 소비자, 생산자, 브로커, 로그, 파티션 및 클러스터와 같은 다양한 구성 요소로 구성된다. 레코드에는 키(선택 사항)..
명령과 조회의 책임분리를 의미한다. 쉽게 말해서 명령과 조회를 처리하는 책임을 분리하는 것이 CQRS의 핵심이다. CQRS는 초기 CQS에서 시작하여 확장했다. CQS는 Command Query Separation의 약자다. 시스템에서 처리되는 명령과 조회를 정의하는 핵심 개념이자, 둘을 분리시키는 디자인 패턴이다. 명령은 상태를 변경하는 것이고, 조회는 상태를 반환하는 작업을 의미한다. CQRS와 마이크로서비스 마이크로서비스의 핵심은 서비스별 DB를 각기 다르게 채택하는 것이다. 서비스 성능 향상을 위해 인스턴스를 스케일 아웃하여 여러개로 실행하면 빈번한 명령과 조회 작업으로 리소스 교착상태가 발생한다. 더구나 명령보다 조회 요청이 훨씬 많기 때문에 하나의 서비스 내에 모든 기능을 넣어두면, 조회 요청..