AWS Certified Solutions Architect Associate [22] 기타등등

CHAN LIM·2022년 7월 29일
0

CICD

Continuous Integration

  • 지속적 통합
  • 개발자들은 보통 코드를 작성할 때 코드를 리포지토리에 둡니다.
    • GitHub나 Bitbucket
  • AWS에서는 CodeCommit을 씁니다.
  • 그 뒤에 코드가 푸시되자마자 체크하고 테스트를 할 테스팅 서버나 빌드 서버가 있어야 합니다.
    • 유명한 도구 Jenkins, AWS에선 CodeBuild
    • 코드를 받아 빌드하고 테스트하는 도구
  • 그래야 개발자들이 테스트에서 피드백을 얻고 테스트 통과 여부를 알 수 있습니다.

  • 코드가 테스트되는 대로 빠르게 전달하고 자주 배포할수록
    개발자들은 워크플로우에서 막히지 않기 때문에 행복할 겁니다.

Continuous Delivery

  • 지속적 배포
  • 생성되고 빌드 된 소프트웨어가 안정적으로 릴리스 되도록 확실히 하는 것
  • AWS 내 기술은 CodeDeploy, Jenkins CD Spinnaker

Technology Stack for CICD

  • CodeCommit은 코드 확인

  • CodeBuild 코드 빌드와 테스트

  • CodeDeploy는 코드 배포 CodePipeline은 오케스트레이션


CloudFormation

Infrastructure as Code

  • 현재는 수동 작업을 많이 했는데요 모든 걸 하나하나 만들어서 재생산하기가 쉽지 않습니다.

  • 때문에 다른 리전이나 계정에서 또는 동일 리전이지만 모든 데이터가 삭제됐을 경우 동일 작업을 다시 하기 쉽지 않습니다.

  • 만약 우리의 모든 인프라가 코드로 되어 있으면 어떨까요?
  • 만약 어떤 코드를 항상 배포하고, 생성하고 업데이트하고, 삭제하는 것으로 인프라를 개선할 수 있다면 어떨까요?

그게 바로 코드형 인프라의 개념입니다


CloudFormation

  • 모든 리소스에 대한 AWS 인프라를 선언형으로 구성할 수 있는 방법이고 리소스의 대부분은 지원됩니다.

EX)
보안 그룹을 이용할 EC2 머신 두 개
이 머신들이 이용할 두 탄력적 IP
S3 버킷과 NLB가 필요하다고 적고
CloudFormation 템플릿에서
이 모든 사항을 지정하고 CloudFormation에서 실행하면

  • CloudFormation은 사용자가 지정한 정확한 구성으로 올바른 주문으로 이러한 데이터를 생성합니다.

  • 좋은 점 :
    • 코드형 인프라이기 때문에
      • 어떤 리소스도 수동으로 만들 필요 없어 제어하기가 쉽습니다.
      • Git 등을 통해 버전을 관리할 수 있습니다.
      • 인프라의 변화는 코드를 통해 검토됩니다.
    • 비용
      • 스택 내의 각 리소스가 CloudFormation 식별자로 태그되어 전체 CloudFormation 스택의 비용이 얼마나 될지 쉽게 알 수 있습니다.
      • CloudFormation 템플릿을 사용해 리소스 비용을 예측하는 기능도 있습니다.
      • 비용 절감 전략으로서 Dev 내에서 자동으로
        모든 템플릿을 오후 5시에 삭제할 수 있으며
        오전 8시에 안전하게 재생성할 수 있습니다
    • 생산성
      • 클라우드에서 인프라를 삭제하고 재생성할 수 있게 되고 템플릿에 대한 도표를 자동 생성할 수 있습니다.
      • PowerPoint 자료를 생성할 때 유용합니다.
      • 선언형 프로그래밍이 가능해 순서나 오케스트레이션 등을 알 필요가 없습니다.
    • 관심 분리
      • 원하는 만큼 스택을 생성할 수 있습니다.
      • 보통 한 애플리케이션에 한 스택과 여러 레이어가 필요합니다.
    • 시간을 낭비할 필요 없이 웹의 기존 템플릿을 활용하거나 참고 자료를 활용할 수 있습니다.

CloudFormation 작동 방식

  • 템플릿S3에 업로드한 뒤 CloudFormation에서 참조합니다.
  • 템플릿을 업데이트할 때는 이전 것을 편집할 수 없고 템플릿의 새 버전을 AWS에 재업로드해야 합니다.
  • 해당 CloudFormation 스택이름으로 식별됩니다.
  • CloudFormation에서 스택을 지우면 그 스택으로 만들어진 모든 것이 삭제됩니다.

CloudFormation 템플릿 배포

  • Manual way

    • 템플릿을 수정하고 콘솔로 매개 변수 등을 넣습니다.
  • Automated way

    • YAML 파일에서 템플릿을 수정합니다.
    • 전체 자동화를 원한다면 CLI를 사용해 템플릿을 배포할 수 있습니다.

CloudFormation 구성 요소

  1. Resources (리소스) : 필수 요소이며 이는 템플릿에서 사용될 AWS 리소스를 선언합니다.
  2. Parameters (매개변수) : 템플릿에 동적 입력이 필요할 때 쓰입니다.
  3. Mappings : 템플릿의 정적 변수
  4. Outputs (출력) : 생성된 것에 대한 참조
  5. Conditionals (조건) : 리소스를 생성할 조건 목록
  6. Metadata

++

  • 템플릿 헬퍼
    • 참조
    • 함수

CloudFormation - StackSets

  • 여러 리전과 계정을 통틀어
    CloudFormation 스택생성, 업데이트, 삭제하게 해주는 고급 기능입니다
  • 관리자가 StackSets를 생성해야 합니다.
  • 거기서 스택 인스턴스생성, 업데이트, 삭제할 수 있는 신뢰된 계정을 정해야 합니다.
  • StackSets를 업데이트하면 모든 계정과 리전 내의 관련 스택 인스턴스가 전부 업데이트됩니다.
  • 여러 리전과 여러 계정을 관리하는 CloudFormation의 관리 포탈 같은 것입니다.

    CloudFormation 스택의 글로벌, 계정 간 배포


즉, CloudFormation은

코드형 인프라를 갖추거나 다른 환경에서 스택을 재생산할 때 아주 유용한 서비스입니다.


AWS Step Functions

AWS Step Functions

  • 람다 함수를 오케스트레이션 할 서버리스 비주얼 워크플로우를 만드는 방법입니다.
  • 모든 흐름은 JSON 상태 머신으로 표현됩니다.
  • 범용성이 좋습니다.
    람다 함수 시퀀스 병렬 람다 함수 조건, 시간 초과, 오류 처리 등을 사용할 수 있습니다.
  • EC2, ECS, 온-프레미스 서버, API 게이트웨이 같은 다른 서비스와 통합도 가능합니다.
  • 최대 실행 시간은 1년입니다.
  • 수동 승인 기능도 구현할 수 있습니다. 까다롭지만,
  • 사용 :
    • 주문 처리
    • 데이터 처리 또는 웹 애플리케이션
    • 모든 워크플로우

AWS SWF – Simple Workflow Service

  • 애플리케이션 간 작업도 조정할 수 있습니다.
  • 서버리스가 아닙니다.
  • 최대 실행 시간은 1년입니다.
  • 활동 단계(activity step)결정 단계(decision step)라는 개념이 있습니다.
  • 내장된 인간 관여 단계가 있습니다.
    • 단계 함수와 아주 유사하죠.
  • 웹에서 웨어하우스, 웨어하우스에서 배달까지 주문 처리 기능이 있습니다.
  • 단계 함수와 SWF의 차이는 후자가 이전에 나왔다는 겁니다.
  • 참고서와 FAQ 모두 새 애플리케이션에는 단계 함수 사용을 권장합니다.
    이 때를 제외하고,
    • 과정에 개입하기 위한 외부 시그널이 필요할 때
    • 하위 과정이 상위 과정에게 값을 반환하게 할 때

Amazon EMR

  • Elastic MapReduce
    • MapReduce는 빅데이터 용어입니다.
  • EMR은 빅데이터에 사용되는 Hadoop 클러스터를 생성합니다.
    • 빅데이터는 많은 양의 데이터를 분석 및 처리하는 데 사용됩니다.
  • EMR로 생성하는 클러스터는 수백 개의 EC2 인스턴스로 구성될 수 있습니다.
  • Spark, HBase,Presto, Flink 등의 엔진을 지원합니다.
  • 모든 것을 프로비저닝하고 모든 것을 구성한다는 겁니다.
  • EMR과 작동하는 오토 스케일링이 있습니다.
  • 스팟 인스턴스로 통합되어 있습니다.
  • 사용 :
    • 데이터 처리
    • 머신 러닝
    • 웹 인덱싱
    • 빅데이터

AWS Opsworks

  • ChefPuppet은 오픈 소스 소프트웨어로 자동으로 서버를 구성하거나 반복 작업을 수행할 수 있게 해주는 도구입니다.
  • EC2온프레미스 VM과 궁합이 좋습니다.
  • AWS Opsworks는 관리형 Chef, Puppet과 같습니다.
  • AWS SSM의 대안과 같다고 봅니다.
  • 비슷한 작업을 여러 번 수행할 수 있게 해줍니다.
  • Chef, Puppet을 필요하다 -> AWS Opsworks를 사용한다.

Chef / Puppet

  • 두 소프트웨어는 구성을 코드로 관리하게 합니다.
  • 지속적으로 배포를 할 수 있게 돕습니다.
  • Linux, Windows에서 사용 가능합니다.
  • 사용자 계정, Cron 작업, NTP 패키지, 서비스여러 가지를 자동화할 수 있습니다.
  • Chef에서는 Recipe
  • Puppet에서는 Manifest
  • 두 소프트웨어는 SSM, Beanstalk 등과 비슷합니다.
  • ChefPuppet을 AWS에서 이용하는 이유는 오픈 소스 소프트웨어이기 때문에 다른 클라우드에서 작동이 가능합니다.

AWS WorkSpaces

  • AWS WorkSpaces는 관리형 보안 클라우드 데스크톱 서비스입니다.
  • 기본적으로는 온프레미스에서 VDI, 즉 가상 데스크톱 인프라를 프로비저닝하는 것입니다.
  • 온 디맨드
  • 사용량만큼 청구됩니다.
  • 안전하고 암호화되고 네트워크가 격리됩니다.
  • Microsoft의 액티브 디렉터리와 통합됩니다.

AppSync

  • 실시간으로 모바일 및 웹 애플리케이션 간 데이터를 저장하고 동기화하는 서비스입니다.
  • 모바일과 웹 애플리케이션 사이의 데이터를 실시간으로 동기화합니다.
  • GraphQL을 사용합니다.
  • 기본적으로 AppSync관리형 GraphQL입니다.
  • 클라이언트 코드가 자동으로 생성될 수 있습니다.
  • DynamoDBLambda와 통합됩니다.
  • 실시간 구독
  • 오프라인 데이터 동기화
  • Cognito Sync 대체
  • 세분화된 보안이 가능해집니다.

Cost Explorer

  • AWS 비용 및 시간에 따른 사용량을 시각화하고 이해하며 관리하는 데 사용됩니다.
  • 사용자 정의 보고서를 생성해서 비용과 사용량 데이터를 분석할 수 있습니다.
  • 전체적인 데이터를 분석할 수 있습니다.
    • 전체 계정 간 총비용 및 사용량 등
    • 매달, 매시간 혹은 리소스 레벨의 세부 단위
  • 청구서 요금을 낮추기 위한 최적의 절감형 플랜을 선택할 수 있기 때문에 비용을 절약할 수 있습니다.
  • 향후 12개월까지의 사용량을 예측할 수 있습니다.

AWS Trusted Advisor

  • 사용자는 계정을 분석하고 권장사항을 제공받기 위해 AWS로부터 높은 수준의 계정 평가를 받으려고 할 때 사용합니다.
  • 사용자 계정에서 다섯 가지 범주의 문제를 분석합니다.

비용 최적화, 성능, 보안, 내결함성, 서비스 할당량

  • 첫 번째 티어는 모든 고객에게 핵심 검사와 권장사항을 제시합니다.
    • 계정을 개선하기 위해 무엇을 할 수 있는지에 관한 정보를 전달하는 기본 검사입니다.
    • 콘솔에서 직접 Trusted Advisor의 주간 이메일 알림을 받기 때문에 매주 원활하게 추적할 수 있습니다.
  • 비즈니스나 기업의 지원 플랜
    • Trusted Advisor의 기능을 전부 사용하고 싶을 때 합니다.
    • 전체 기능을 사용하면 서비스 제한에 도달할 경우 CloudWatch 경보를 설정할 수 있습니다.
  • Trusted Advisor에 프로그래매틱 액세스할 수 없어요.

Trusted Advisor Checks Examples

  • 비용 최적화
    • 활용도 낮은 EC2 인스턴스
    • 작동되지 않는 로드 밸런서
    • 활용도 낮은 EBS 볼륨
    • 예약 인스턴스 및 절감형 플랜 최적화를 표시합니다.
  • 성능
    • 활용률이 매우 높은 EC2 인스턴스에 대한 정보를 얻을 수 있습니다.
    • CloudFront CDN 최적화 정보도 얻을 수 있습니다.
    • EC2를 EBS에 연결하여 얻을 수 있는 성능 및 최적화를 보여줍니다.
    • DNS에 대한 Alias 레코드 권장 사항을 보여줍니다.
  • 보안
    • 루트 계정의 MFA 활성화 여부를 확인할 수 있습니다.
    • 최근에 IAM 키가 교체되었는지 또한 IAM 액세스 키가 노출되었는지 볼 수 있습니다.
    • S3 버킷 권한에 관련한 보안 문제를 보여줄 것입니다.
  • 내결함성
    • EBS 스냅샷 수명
    • 서로 다른 AZ의 균형
    • 오토 스케일링 그룹과 RDS 그리고 ELB가 모두 다중 AZ인지 아닌지 알려줍니다.
  • 서비스 할당량
    • 특정 서비스가 할당량에 도달했는지 알 수 있습니다.

요약

  • CodeCommit
    • 코드를 저장할 수 있는 서비스입니다. 유사한 서비스는 GitHub입니다.
  • CodeBuild
    • CICD 파이프라인에서 서비스 구축 및 테스트
  • CodeDeploy
    • 패키지된 코드를 EC2 및 AWS Lambda에 배포
  • CodePipeline
    • CICD 파이프라인의 작업 조정(구축 단계, 수동 승인, 많은 배포 등)
  • CloudFormation
    • AWS를 위한 코드로서의 인프라. 리소스를 관리, 생성 및 업데이트하는 선언적 방법입니다.
  • ECS(탄력적 컨테이너 서비스)
    • AWS의 Docker 컨테이너 관리 시스템. 마이크로 서비스를 만드는 데 도움이 됩니다.
  • ECR(탄력적 컨테이너 레지스트리)
    • AWS의 Docker 이미지 리포지토리. Docker 이미지는 거기에서 Push 및 Pull 할 수 있습니다.
  • Step Function
    • Lambda 함수 및 ECS 컨테이너를 워크플로로 오케스트레이션/조정
  • SWF(단순 워크플로 서비스)
    • 대규모 워크플로를 오케스트레이션하는 오래된 방식입니다.
  • EMR(탄력적 맵 축소)
    • EC2에 배포된 AWS의 빅 데이터 / Hadoop / Spark 클러스터
  • Glue
    • AWS의 ETL(Extract Transform Load) 서비스
  • OpsWorks
    • AWS의 관리형 Chef & Puppet
  • ElasticTranscoder
    • 다양한 최적화된 포맷으로 관리되는 미디어(비디오, 음악) 변환 서비스
  • Organization
    • 여러 AWS 계정의 계층 구조 및 중앙 집중식 관리
  • Workspace
    • 클라우드에서 주문형 가상 데스크톱. 기존의 온프레미스 VDI 인프라 대체
  • AppSync
    • AWS의 서비스로서의 GraphQL
  • SSO(싱글 사인온)
    • AWS에서 관리하는 하나의 로그인으로 다양한 비즈니스 SAML 2.0 호환 애플리케이션(office 365 등)에 로그인

From
AWS Certified Solutions Architect Associate 시험합격!

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글