hyewon's study
AWS Skillbuilder: Getting Started with DevOps on AWS(Korean) 본문
모듈1. DevOps 소개
DevOps란?
DevOps는 소프트웨어 개발(Dev)과 운영(Ops)을 통합하여 개발자의 생산성과 운영 안정성을 최적화하는 방법론입니다. 개발(Dev)은 소프트웨어를 만드는 사람과 프로세스를 의미하며, 신속한 변경과 자주 릴리스를 통해 전달 속도를 측정합니다. 반면, 운영(Ops)은 소프트웨어를 제공하고 모니터링하는 팀과 프로세스를 나타냅니다. 안정성을 중시하며, 잦은 릴리스가 안정성과 신뢰성을 저해할 수 있습니다. DevOps는 이러한 역할들을 통합하여 팀 간의 협업을 강화하고, 자동화된 프로세스와 도구를 통해 신속한 개발과 안정적인 운영을 가능하게 합니다.
기존 개발 방식의 문제점
- 기존의 소프트웨어 개발 방식은 느리고 비효율적이어서 안정적인 고품질 애플리케이션을 신속하게 제공하려는 팀의 노력을 뒷받침하지 못합니다
폭포형 개발 프로젝트
- 느리고 반복이 불가능하며 변화를 수용하기가 어렵고 릴리스 주기가 깁니다
- 개발 단계가 사일로화되어 있으며, 각 단계는 이전 단계가 끝난 후 시작되면서 다른 단계로 넘어가는 시간이 깁니다.
모놀리식 애플리케이션
- 하나의 유닛으로 개발 및 배포되므로 변경 사항이 발생하면 전체 애플리케이션을 다시 배포해야 합니다
- 애플리케이션의 규모가 어느 정도 크면 개발자가 전체 애플리케이션을 이해하는데 어려움을 겪어 유지관리 문제가 발생됩니다.
- 단일 개발 스택을 사용하여 구현되므로 기술을 변경하기가 어렵고 비용이 많이 듭니다.
왜 DevOps란?
DevOps의 이점
- 민첩성: 시장 요구를 예측하고 신속하게 가치를 제공하여 경쟁우위를 확보합니다. 팀이 빠른 속도로 변화에 대응하고, 제어되고 규모가 작은 업데이트를 필요에 따라 지속적으로 제공할 수 있는 개발방식을 갖춥니다.
- 신속한 제공: 팀이 혁신과 제품 개선에 집중할 수 있도록 하여 개발을 지원합니다 마이크로서비스 아키텍처를 사용하면 개발이 분산되어 각 서비스를 전체 시스템과 독립적으로 구축, 배포 및 관리할 수 있습니다
- 안정성: 최종 사용자에게 지속적으로 긍정적인 경험을 제공하는 한편 더욱 빠르게 안정적으로 제공할 수 있도록 애플리케이션 업데이트와 인프라 변경의 품질을 보장합니다. 지속적 통합 및 지속적 전달과 같은 방식을 사용하여 각 변경사항이 제대로 작동하며 안전한지 테스트합니다.
- 확장: 규모에 따라 인프라와 개발 프로세스를 운영 및 관리합니다. 자동화와 일관성이 지원되므로 위험을 줄이면서 복잡한 시스템 또는 변화하는 시스템을 효율적으로 관리할 수 있습니다.
- 협업 강화: 개발자와 운영 팀은 긴밀하게 협력하고, 많은 책임을 공유하며, 워크플로를 결합합니다. 이를 통해 비효율성을 줄이고 시간을 절약할 수 있습니다.
- 보안: DevOps를 활용하면 제어 능력을 유지하고 규정 준수 상태를 유지하는 동시에 신속하게 대응할 수 있습니다. 자동화된 규정 준수 정책, 세분화된 제어 및 구성 관리 기술을 사용합니다.
DevOps의 핵심 요소(CAMS)
- Culture(문화): 개발과 운영 팀의 경계를 완화하고 협업 수준 향상하여 품질 및 효율성 향상 시킬 수 있도록 문화와 환경을 제공해야합니. 조직이 사일로화 되지 않도록 비즈니스 목표에 맞춘 원활한 커뮤니케이션과 협업 문화가 중요합니다.
- Automation(자동화): 개발자가 소스 코드를 작성하는 것부터 실제 서비스의 적용되기까지의 전 과정을 수작업이 아닌 자도오하된 프로세스를 관리하고 서비스에 대한 품질 검사 및 모니터링과 운영도 자동화합니다. 시간을 절약할 수 있을 뿐만 아니라 작업자의 실수를 예방하고 서비스의 일관성을 유지할 수 있습니다.
- Measure(측정): 지속적인 서비스 개선을 위해서 DevOps 전반에 대한 측정능력 및 방안이 중요하며, 측정된 데이터는 투명하고 액세스 가능해야하며 시각화를 통해 한눈에 파악할 수 있어야 합니다.
- Share(공유): 조직 전반에 걸쳐 요구사항을 도출하고 협력할 수 있는 공통된 도구를 활용하여 중복된 작업을 제거하고 참여 의식을 갖도록 해야합니다. 개발과 운영을 하면서 얻는 노하우를 조직 구성원들에게 공유함으로써 향후 발생할 수 있는 장애를 줄이고 조직 전체의 기술 역량을 높일 수 있게 해야합니다.
모듈 2. DevOps 방법
DevOps 사례
- 커뮤니케이션 및 협업: DevOps 팀은 정보 및 커뮤니케이션의 투명성을 강조하는 강력한 문화적 규범을 설정합니다. 이 팀은 소유권을 가지고 프로젝트의 전체 요구 사항을 고려하며, 공동 목표를 위해 협력하면서 상호 신뢰와 파트너십을 형성합니다. 기존 개발 및 운영 워크플로를 통합하여 생산성을 개선하며, DevOps 도구와 자동화된 제공 프로세스는 작업 조율, 반복 작업 자동화, 피드백 루프 촉진을 통해 이러한 통합을 지원합니다.
- 모니터링 및 관측성: 모니터링 및 관측성은 애플리케이션과 인프라의 변경 사항이 성능과 사용자 경험에 미치는 영향을 평가하는 데 사용됩니다. DevOps 피드백 루프의 일환으로, 이는 팀이 문제에 대응하고 개선하는 데 도움을 줍니다.
- 관찰 가능한 시스템은 로그, 지표, 추적 데이터를 생성하여 운영 가시성을 제공합니다. 로그는 경고 등의 불연속 이벤트를 기록하고, 지표는 상태와 성능 정보를 캡처하며, 추적은 분산 시스템에서 트랜잭션과 데이터 흐름을 추적합니다. 이를 통해 문제의 원인을 파악할 수 있습니다. 모니터링은 시스템의 상태를 알려주며, 관찰 가능한 시스템에서 수집한 데이터를 통합하고 시각화하여 팀이 성과 인사이트를 얻고, 추세를 파악하고, 경보를 설정하며, 결과를 예측할 수 있게 합니다.
- 지속적 통합(CI): 지속적 통합(CI)은 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하고, 자동화된 빌드와 테스트를 수행하는 DevOps 소프트웨어 개발 방식입니다. 이는 병합 문제를 조기에 비용 효율적으로 해결할 수 있게 도와줍니다. CI는 소프트웨어 릴리스 프로세스의 빌드 또는 통합 단계로, 자동화 도구와 자주 통합하는 문화적 요소를 포함합니다. CI의 주요 목표는 버그를 신속하게 찾아 해결하고, 소프트웨어 품질을 개선하며, 새로운 업데이트의 검증 및 릴리스 시간을 단축하는 것입니다.
- 지속적 전달/지속적 배포(CD): 지속적 전달은 코드 변경이 자동으로 빌드, 테스트되고 비프로덕션 테스트 또는 스테이징 환경에 배포되는 방식입니다. 프로덕션 환경으로 배포하기 전 수동 승인이 필요합니다. 이를 통해 개발자는 항상 테스트를 거친 배포 준비 상태의 빌드를 갖게 됩니다. 지속적 배포는 지속적 전달과 유사하지만, 프로덕션 환경으로 자동 배포가 이루어지며, 명시적 승인이 필요하지 않습니다.
- 마이크로서비스 아키텍처: 마이크로서비스 아키텍처는 애플리케이션을 독립적으로 개발, 테스트, 배포할 수 있는 소결합된 서비스 세트로 구축하는 설계 방식입니다. 각 서비스는 특정 비즈니스 기능을 제공하며, 다른 서비스와 코드를 공유하지 않습니다. 모든 통신은 잘 정의된 API를 통해 이루어집니다. 각 서비스는 특정 팀에 할당되어 책임지고 관리할 수 있습니다.
- 코드로서의 인프라: 개발, 테스트, 프로덕션 환경은 하드웨어와 소프트웨어로 구성된 복잡한 환경에서 운영되며, 수동 설정은 확장 불가능하고 오류가 발생하기 쉽습니다. Infrastructure as Code (IaC)는 코드와 소프트웨어 개발 기술을 사용하여 인프라를 프로비저닝하고 관리합니다. 클라우드의 API 기반 모델을 통해 리소스를 프로그래밍 방식으로 대규모로 설정하고 구성할 수 있습니다. 환경이 코드로 정의되므로 신속하게 배포하고, 최신 패치로 업데이트하며, 이전 버전으로 롤백하거나, 반복 가능한 방식으로 복제할 수 있습니다. 또한 코드 수정을 통해 환경 변화를 관리하고, 변경 사항을 추적하며, 리소스를 최적화하고 시스템 가동 시간을 개선할 수 있습니다.
- 코드: java, net 또는 Python과 같은 언어로 코드를 개발합니다.
- 빌드: 소프트웨어의 빌드를 개발하는 과정에 코드 컴파일, 코드 스타일 및 표준 점검 등이 포함됩니다.
- 테스트: 애플리케이션이 정의된 기능, 성능, 설계 및 구현 요구사항을 충족하는지 평가합니다.
- 릴리스: 테스트된 코드를 특정 버전 번호로 준비하고 패키징 합니다.
- 배포: 테스트, 스테이징, 알파, 베타 또는 프로덕션과 같은 대상 환경에 릴리스를 배포합니다.
- 모니터링: 프로덕션 환경에서 애플리케이션을 모니터링하여 비정상적인 활동이나 오류를 신속하게 감지합니다.
★ CI/CD 파이프라인: 소프트웨어 개발 과정에서 지속적 통합(CI)와 지속적인 배포(CD)를 가능하게 하는 자동화된 프로세스입니다.
CI/CD 파이프라인은 파이프라인을 반복적으로 거치는 과정에서 코드 품질, 보안 및 빠르고 일관된 배포를 보장합니다.
CI -> 여러명의 개발자가 각각 맡은 기능을 개발하면 개발된 소스 코드를 하나로 합쳐 해당 기능이 꼭 필요한지 다른 사람과 중복된 부분이 없느지를 확인합니다. 이 단계에서 개발자간, 개발자와 컴퓨터 사이에서 빈번한 커뮤니케이션이 발생합니다. 합쳐진 소스는 저장소인 '소스 저장소(Github)'에 저장되 고 이후 빌드 과정을 통해 실행가능한 패키지 형태로 만들고 이 실행파일이 제대로 동작하는지 테스트 과정을 거치게 됩니다. 지속적인 통합을 하게되면 버그를 신속하게 해결할 수 있고, 새로운 소프트웨어 업데이트를 검증 및 릴리스 하는데 시간을 단축할 수 있습니다.
CD-> 실행 파일들을 실제 개발환경에서 테스트 한 뒤 문제가 없으면 상용 서비스에 적용하고 운영 및 모니터링 하는 과정 전체를 말합니다. 이 과정에 하나의 프로세스로 구현되면 개발자는 언제나 즉시 배포할 있습니다.
DevOps 도구
- 클라우드: 개발 팀은 안정적이고 안전한 애플리케이션을 빠르게 혁신하고 제공해야 합니다. 이를 위해 다양한 기술을 활용하며, 클라우드 플랫폼 공급자와 클라우드 컴퓨팅 리소스를 사용합니다. 팀은 물리적 데이터 센터와 서버를 직접 관리하는 대신, AWS 같은 클라우드 공급자를 통해 필요할 때마다 환경을 설정하고 관리합니다.
- 개발: IDE(통합 개발 환경)는 애플리케이션에 대한 코드를 작성, 실행 및 디버깅하는 데 도움이 됩니다. SDK(소프트웨어 개발 키트)는 프로그래머가 특정 플랫폼에 대한 애플리케이션을 개발할 수 있도록 하는 도구 세트입니다. 소스 코드 리포지토리 또는 버전 관리 시스템은 프로젝트의 파일을 저장합니다. 필요에 따라 문서 및 코드에 액세스하거나, 개정 기록을 보거나, 시간에 따른 변경 내용을 비교하거나, 이전 버전으로 되돌릴 수 있습니다.
- IDE: AWS Cloud9, IntelliJ, Eclipse, Visual Studio Code
- SDK: Java용 AWS SDK, iPhone SDK
- 소스 코드 리포지토리: GitHub, AWS CodeCommit
- CI/CD: CI/CD 도구는 지속적으로 통합된 코드를 자동화하여 팀이 코드를 개발하고, 표준을 준수하며, 테스트를 더 자주 실행하고, 다양한 테스트 환경으로 코드를 승격하고, 제품을 인프라에 반복적, 안정적으로 배포할 수 있습니다. CI/CD 도구는 애플리케이션 개발 및 배포 프로세스에 민첩성을 제공하는 동시에, 지속적으로 피드백을 제공하고 적절한 팀에게 모든 문제를 경고하는 데 도움이 되어야 합니다.
- 빌드 도구: Jenkins, Travis CI, AWS CodeBuild
- 소스 제어 도구, 리포지토리: Git, AWS CodeCommit
- 배포 도구: AWS CodeDeploy, AWS CloudFormation
- 파이프라인 자동화 도구: AWS CodePipeline, Jenkins, GitLab
- 인프라 자동화: 제약 조건을 포함하여 인프라를 프로그래밍 방식으로 정의하여 환경(개발 샌드박스, 테스트, 스테이징, 프로덕션)을 반복적으로 일관되게 프로비저닝합니다. 템플릿을 사용하여 컴퓨팅 서비스, 권한, 종속성 등을 배포할 수 있습니다. 규칙을 구성하고 업데이트 적용을 자동화할 수 있습니다.
- 인프라 자동화 도구: AWS CloudFormation, Terraform, AWS Elastic Beanstalk
- 구성 관리 도구: Chef, Puppet, AWS OpsWorks
- 컨테이너 및 서버리스: 컨테이너는 애플리케이션 실행에 필요한 코드, 설정, 종속성을 패키징하여 어디서든 실행할 수 있게 합니다. 가상 머신보다 가볍고, 다양한 애플리케이션을 지원하며, 구축, 테스트, 배포 과정을 간소화합니다. 보안 정책도 컨테이너 수준에서 구현할 수 있습니다. 그러나 개별 컨테이너 작업을 관리하려면 컨테이너 오케스트레이션이 필요합니다.
- 서버리스 컴퓨팅은 AWS 같은 클라우드 서비스에서 인프라 관리를 대신해주며, 개발자가 코드 작성과 실행에만 집중할 수 있게 합니다.
- 서버리스 서비스: AWS Lambda, AWS Fargate
- 컨테이너 서비스:
- 런타임: 도커, 컨테이너화됨
- 오케스트레이션: Amazon Elastic Container Service(Amazon ECS), Kubernetes, Amazon Elastic Kubernetes Service(Amazon EKS)
- 모니터링 및 관측성: 도구를 사용해 애플리케이션의 상태와 성능 지표를 수집하고, 배포 빈도, 성공/실패한 배포, 애플리케이션 사용 트래픽 등을 추적할 수 있습니다. 분산 시스템에서는 엔드 투 엔드 요청과 트랜잭션 흐름을 추적할 수 있습니다. 로그, 지표, 추적을 시각화하고 분석하여 시스템의 상태와 성능에 대한 인사이트를 얻고, 이를 통해 프로세스를 간소화하고 성능을 개선하며 가동 중지 시간을 줄일 수 있습니다.
- AWS X-Ray, Amazon CloudWatch, AWS Config, AWS CloudTrail
모듈 3. Amazon DevOps 전환
- Amazon은 일찍 클라우드를 개발하면서 아마존 서비스 구조를 기존의 모놀리식 구조에서 DevOps와 마이크로 서비스로 전환을 통해 조직의 구조와 애플리케이션 설계를 바꾸었습니다.이제는 작은 팀들이 서로 독립적으로 일하고, 서비스를 만들고, 배포하는데 더 큰 책임을 가지게 되었지만 이런 변화를 효과적으로 이끌기 위해 자동화와 모니터링이 중요하게 사용되었습니다. 예를 들어, 보안 정책을 자동화하여 코드 배포에 문제가 없도록 했고, 테스트를 더 자주하고 자동화하여 오류를 더 빨리 발견습니다. 이런 변화는 조직 문화에도 영향을 주면서 더 작은 팀이 더 많은 책임을 지게 되면서 협력과 자율성이 강조되었어. 이런 DevOps 전환 덕분에 Amazon은 더 빠르게 혁신하고, 제품을 향상시키며, 경쟁력을 높일 수 있게 되었습니다.
모듈 4. AWS DevOps 도구
- AWS Cloud9: 코드를 작성, 실행 및 디버깅 할 수 있고, AWS CodCommit 리포지토리의 코드를 변경할 수도 있습니다.
- AWS CodeCommit: 안전한 Git 기반 리포지토리를 호스팅하는 완전관리형 소스 제어 서비스입니다. 리포지토리는 CodeCommit의 기본 버전 관리 객체이며 프로젝트 파일과 소스 코드를 저장합니다.
- ※ 사용하는 이유
- 관리 오버헤드를 줄여 코드 저장에 필요한 하드웨어 및 소프트웨어를 관리할 필요가 없습니다.
- Git 명령을 사용하여 코드를 저장하고 팀과 협업할 수 있으며, 안전한 Git 기반 리포지토리를 통해 많은 양의 파일과 긴 개정 기록을 처리할 수 있습니다.
- 다른 AWS 서비스 및 서드 파티 소프트웨어와 통합하여 기존 워크플로를 개선할 수 있습니다.
- CodeCommit는 이벤트에 따라 알림을 생성하고 작업을 트리거하는 기능도 제공합니다. 보안 측면에서는 리포지토리에 대한 액세스가 정책 및 사용자 계정으로 관리되며, 데이터는 암호화되어 저장되고 전송됩니다. 작동 방식은 리포지토리를 생성하고 변경 후에는 변경 사항을 리포지토리로 다시 푸시하는 것입니다. CodeCommit는 Git 명령을 사용하여 코드 작업을 관리하며, 파이프라인의 일부로 사용될 수 있어 쉽게 코드 빌드, 배포 및 자동화할 수 있습니다.
- AWS CodeBuild: 소스 코드를 자동으로 컴파일하고 테스트를 실행하며 소프트웨어 패키지를 생성하는 완전관리형 구축 서비스입니다.
- ※ 사용하는 이유
- 자체 빌드 서버를 설정하고 관리할 필요 없이 완전히 관리되는 서비스를 사용함으로써 관리 오버헤드를 줄일 수 있습니다.
- 소스 코드를 컴파일하고 테스트를 자동으로 실행하여 개발자가 코드 수정 후 빌드 및 테스트 결과를 빠르게 확인할 수 있습니다.
- 다양한 프로그래밍 언어 및 빌드 도구를 지원하므로 개발자는 이미 익숙한 환경에서 작업할 수 있습니다.
- AWS 서비스 및 서드 파티 소프트웨어와 통합하여 기존 워크플로를 개선할 수 있습니다.
- 빌드를 동시에 여러 개 처리하여 작업을 효율적으로 관리할 수 있습니다.
- 빌드 환경을 설정할 때 사전 구성된 기본 빌드 환경을 활용할 수 있으며, 필요에 따라 사용자 지정 빌드 환경을 제공할 수도 있습니다.
모니터링 측면에서는 CodeBuild 콘솔, CloudWatch Logs 등을 통해 빌드를 모니터링할 수 있으며, 보안 측면에서는 빌드 아티팩트가 암호화되어 저장되고 AWS IAM 정책을 통해 빌드 프로젝트에 대한 액세스를 제어할 수 있습니다.
작동 방식은 빌드 프로젝트를 설정한 후 CodeBuild가 빌드 환경을 만들고 코드를 다운로드하여 빌드 사양 파일을 사용하여 빌드를 실행하는 것입니다. 이후 빌드 출력은 Amazon S3 버킷에 업로드되고 CloudWatch Logs로 스트리밍됩니다. 최종적으로 CloudWatch나 기타 서비스를 통해 빌드 진행률을 모니터링할 수 있습니다.
- AWS Codepipeline: 소프트웨어를 릴리스하는 데 필요한 단계를 모델링, 시각화 및 자동화할 수 있게 해주는 지속적 전달 서비스입니다.
- ※ 사용하는 이유
- 릴리스 프로세스를 자동화하여 인적 오류를 줄이고 제공 속도를 높이며 릴리스 품질을 개선할 수 있습니다.
- 파이프라인을 시각화하고 모니터링하여 실패한 작업을 다시 시도하고 파이프라인의 실시간 상태를 확인할 수 있습니다.
- 다양한 소스 통합, 빌드 및 배포 도구를 통합하여 개발자가 효율적으로 작업할 수 있습니다.
- 보안 측면에서는 권한을 세밀하게 관리하여 파이프라인의 보안을 강화할 수 있습니다.
- AWS CodeDeploy: 소프트웨어 배포를 자동화하여 신속하고 안정적으로 배포할 수 있도록 하는 서비스입니다. Amazon Elastic Compute Cloud(Amazon EC2), AWS Fargate, AWS Lambda 또는 온프레미스 서버를 비롯하여 다양한 컴퓨팅 서비스로의 코드 배포를 자동화합니다.
- ※ 사용하는 이유
- CodeDeploy를 사용하면 수동으로 수행되는 오류가 발생하기 쉬운 배포 작업을 자동화하여 신속하고 안정적인 배포를 가능케 합니다.
- AWS Lambda, Amazon EC2, AWS Fargate, 또는 온프레미스 서버 등 다양한 컴퓨팅 플랫폼으로의 코드 배포를 자동화할 수 있습니다.
- 서비스가 확장될 때 요구 사항에 따라 하나 또는 여러 개의 인스턴스에 동시에 배포할 수 있으며, 인스턴스의 수 또는 비율을 지정하여 배포를 관리할 수 있습니다.
- 배포 중 실패한 경우 자동으로 롤백되거나 사용자 개입으로 롤백할 수 있어 배포의 안전성을 보장합니다.
- AWS X-ray: 프로덕션, 분산 애플리케이션(마이크로서비스 또는 서버리스 아키텍처)을 분석하고 디버깅할 수 있습니다.
- Amazon CloundWatch: 리소스 및 애플리케이션 성능을 추적하고, 로그 파일을 수집 및 모니터링하고, 경보 알림을 설정하고, 문제를 해결 할 수 있습니다.
알아 두어야 할 추가 서비스
- 통합 개발 환경(IDE) 서비스: IDE(통합 개발 환경)는 구문 강조 표시, 자동 완성, 구문 힌트 등의 기능을 통해 개발자의 생산성을 높입니다. IDE는 로컬로 설치하거나 클라우드를 기반으로 할 수 있으며, 웹 브라우저에서 액세스할 수 있습니다.
- AWS Cloud9는 Amazon의 클라우드 기반 IDE로, 브라우저만으로 코드를 작성, 실행 및 디버깅하는 데 사용할 수 있습니다. AWS Cloud9을 사용하여 CodeCommit 리포지토리에서 코드를 변경할 수 있습니다. AWS 전용 소프트웨어 개발 키트(SDK)에 AWS Cloud9를 사용할 수도 있습니다.
- 인프라 관리 서비스: 인프라를 Infrastructure as Code(IaC)로 취급하면 팀의 민첩성과 효율성이 향상되고 인프라가 더욱 강력해지고 전반적인 비용이 절감됩니다.
- AWS CloudFormation은 템플릿을 사용하여 리소스 및 종속성을 설명하여 프로비저닝 및 관리를 자동화하는 IaC 서비스입니다. 전체 스택을 단일 유닛으로 관리하여 일관된 프로비저닝 및 관리를 실현할 수 있으며, 여러 AWS 계정 및 리전에서 스택을 관리할 수 있습니다.
- AWS OpsWorks는 Chef 및 Puppet과 같은 자동화 플랫폼을 기반으로 하는 구성 관리 서비스입니다. 이를 통해 Amazon EC2 인스턴스나 온프레미스 환경에서 서버를 구성, 배포 및 관리할 수 있습니다.
- 컨테이너 및 서버리스 서비스: 개발 작업을 지원하고 파이프라인을 개선하는 다양한 서비스를 제공합니다.
- AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드를 작성하고 호출될 때 실행할 수 있습니다. Lambda 함수를 사용하여 CI/CD 파이프라인을 사용자 지정할 수 있으며, 릴리스 작업을 승인하거나 중단하고 배포 시 트래픽을 제어하는 등의 작업을 수행할 수 있습니다.
- Amazon Elastic Container Service(Amazon ECS)는 Docker 컨테이너를 지원하는 고성능 컨테이너 관리 서비스입니다. 관리형 클러스터에서 애플리케이션을 실행할 수 있어 설치, 운영 및 확장에 관련된 번거로움을 줄일 수 있습니다.
- 모니터링 서비스: 모니터링은 DevOps의 핵심 부분이며, 문제가 발생하기 전에 사전 예방할 수 있습니다.
- AWS X-Ray는 분산 추적 시스템으로, 마이크로서비스나 서버리스 애플리케이션과 같은 분산 애플리케이션을 분석하고 디버깅하는 데 도움이 됩니다. 애플리케이션을 통해 전달되는 요청의 포괄적인 보기를 제공하며, 기본 구성 요소 맵을 시각화합니다.
- Amazon CloudWatch는 AWS 및 하이브리드 애플리케이션의 모니터링과 관리를 위한 서비스로, 리소스 및 애플리케이션 성능을 추적하고, 로그 파일을 수집하고 모니터링하며, 문제를 해결하고 경보 알림을 설정할 수 있습니다.
- AWS Config는 AWS 리소스의 구성을 진단, 감사 및 평가할 수 있는 서비스로, 리소스 구성을 모니터링하고 기록하여 원하는 구성과 대조하여 평가 작업을 자동화합니다.
- AWS CloudTrail은 AWS 계정의 거버넌스, 규정 준수, 운영 감사를 지원하는 서비스로, AWS 인프라에서 계정 활동을 기록하고 모니터링하며 보관합니다. 이를 통해 보안 분석, 리소스 변경 추적 및 문제 해결이 간소화됩니다.
느낀점
나는 DevOps에 대해 들어보기만 했지 어떤 일을 하고 어떠한 이점이 있어서 기업들이 DevOps를 쓰는지 아는 게 없었다. DevOps가 무슨 일을 하는지 궁금해서 알아보기 시작했고, 개발과 운영팀을 합쳐서 부르는 이름인지 처음 알게 되었다. 왜 기업들이 기존 개발방식을 두고 DevOps로 바꿨는지 알게되었던 교육이었던거 같다. DevOps를 통해 조직은 더 빠르고 신뢰할 수 있는 소프트웨어를 제공하며, 변화하는 시장 요구에 민첩하게 대응할 수 있다는 것을 알게되었다. 점차 이렇게 발전하는 DevOps가 향후에 더 나은 소프트웨어 제공과 사용자 경험을 제공한다고 기대하는 바이다.
출처: AWS Skillbuilder
'AWS' 카테고리의 다른 글
AWS Educate: AWS Cloud Operation (0) | 2024.06.05 |
---|---|
AWS educate: AWS Database (0) | 2024.05.29 |
AWS Skillbuilder : Introduction to AWS CloudFormation (Korean) (0) | 2024.05.22 |
AWS Skillbuilder : Building with Amazon Aurora Databases (Korean) (0) | 2024.05.22 |
AWS Educate: AWS Identity and Access Management(IAM) 실습 (0) | 2024.05.07 |