✔️ AWS 클라우드(AWS Cloud)는 아마존 웹 서비스(AWS)가 제공하는 클라우드 컴퓨팅 플랫폼으로 컴퓨팅, 스토리지, 네트워킹, 데이터베이스, 분석, 머신러닝, 보안 등 광범위한 서비스 제공
✔️ AWS 클라우드를 사용하면 기업은 사용한만큼 비용을 지불하고, 필요에 따라 리소스를 확장하거나 축소할 수 있음
✔️ AWS 클라우드의 주요 이점으로 요구 사항에 가장 적합한 서비스를 선택하고 사용한만큼 비용 지불
⭐️ 인프라에 막대한 초기 투자 없이도 필요한 리소스에 액세스할 수 있도록 하기에 이상적
✔️ 데이터와 리소스를 보호하기 위한 다양한 보호 조치를 갖춤
✔️ 데이터가 안전하고 관련 규정을 준수하도록 보장하기 위해 다양한 규정 준수 프로그램 마련
✔️ 클라우드에서 가상 서버를 쉽게 시작하고 관리할 수 있으므로 필요에 따라 리소스를 쉽게 확장하거나 축소할 수 있음
✔️ 다양한 인스턴스 유형과 크기 중 선택할 수 있으며 사용한 리소스에 대해서만 비용 지불
✔️ 인터넷 어디에서나 대량의 데이터를 저장하고 검색할 수 있는 객체 스토리지 서비스
✔️ 확장성과 내구성, 보안이 뛰어나 클라우드에서 데이터를 저장하고 관리하는데 이상적인 솔루션이 됨
✔️ 아래 서비스를 사용하면 인프라나 확장에 대해 걱정할 필요 없이 클라우드에서 복잡한 애플리케이션을 쉽게 구축하고 관리할 수 있음
데이터베이스 관리를 위한 RDS (Amazon Relational Database Service)
데이터 웨어하우징 및 분석을 위한 Amazon Redshift
검색 및 분석을 위한 Amazon Elasticsearch Service
⭐️ 전반적으로 AWS 클라우드는 광범위한 서비스와 도구를 제공하는 강력하고 유연한 클라우드 컴퓨팅 플랫폼
✔️ 1. AWS 웹사이트로 이동
✔️ 2. AWS 계정 생성
✔️ 3. 계정 정보 제공
✔️ 4. 결제 정보 제공
✔️ 5. 지원 수준 선택
⚡️ AWS의 데이터와 리소스 보안 관리를 위한 가장 중요한 도구 중 하나가 IAM
✔️ 사용자와 AWS 리소스에 대한 액세스를 관리할 수 있는 웹서비스
리소스에 액세스할 수 있는 사람, 수행할 수 있는 작업, 액세스할 리소스 제어 가능✔️ 세분화된 액세스 제어를 제공하여, 세부적인 수준에서 특정 리소스에 대한 권한을 부여하거나 거부할 수 있음
✔️ 리소스 보호에 필수적인 도구

✔️ IAM을 사용하면 여러 AWS 계정을 생성 및 관리 가능

✔️ 1. AWS 계정 생성
✔️ 2. IAM 설정
IAM 콘솔로 이동하여 IAM 설정 가능
✔️ 3. IAM 사용자 설정
IAM 사용자 생성
IAM 사용자는 AWS 리소스에 액세스해야하는 사람이나 서비스를 나타내는 IAM에서 생성한 엔티티
IAM 사용자 생성 시 사용자가 가져야하는 권한 지정 가능
✔️ 4. IAM 그룹 생성
IAM 그룹은 IAM 사용자의 모음
IAM 그룹 생성 시 그룹이 가져야하는 권한 지정 가능
"IAM Basics"와 "IAM User Guide: Getting Started" 참고
https://www.youtube.com/watch?v=iF9fs8Rw4Uo&feature=youtu.be
https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html
✔️ 5. IAM 그룹에 권한 할당
생성된 IAM 그룹에 권한 할당 가능
그룹이 가져야하는 권한을 정의하는 IAM 정책 생성 작업 포함
정책을 그룹에 연결
"IAM Tutorial & Deep Dive"와 "IAM Tutorial" 참고
https://www.youtube.com/watch?v=ExjW3HCFG1U
https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
✔️ 6. IAM 사용자 테스트
IAM 사용자를 테스트하여 올바른 권한이 있는지 확인
⭐️ AWS IAM은 리소스에 액세스할 수 있는 사람, 수행할 수 있는 작업, 액세스할 리소스를 제어할 수 있어 리소스 보호에 필수적인 도구
✔️ AWS Systems Manager는 사용자가 AWS 및 온프레미스 리소스 모두에서 운영 작업을 관리하고 자동화할 수 있게 해주는 완전관리형 서비스
운영 작업을 자동화하고 규정 준수를 유지하며 운영 비용 절감 가능온프레미스(On-premise): 기업의 서버를 클라우드와 같이 '가상의 공간'이 아니라 자체적으로 보유하고 있는 서버에 직접 설치하고 운영하는 방식. (<-> 클라우드와 대비되는 개념)
✔️ 사용자는 패치 관리 자동화, OS 및 애플리케이션 배포 자동화, Amazon 머신 이미지(AMI) 생성 및 관리, 리소스 활용도 모니터링 등의 작업 수행 가능
✔️ 운영 데이터에 대한 통합 보기를 제공
사용자는 EC2 인스턴스, 온프레미스 서버 및 AWS 서비스를 비롯한 AWS 인프라 전체에서 운영 데이터를 시각화하고 모니터링 가능
사용자가 문제를 더 빠르게 식별하고 해결하여 운영 효율성을 향상하고 가동 중지 시간을 줄일 수 있음
✔️ 1단계: AWS System Manager 콘솔로 이동

✔️ 2단계: 구성 유형 선택
관리할 리소스 선택해 AWS Systems Manager 구성
예시로 "Patch Manager" 선택

✔️ 3단계: 구성 옵션 지정
Systems Manager config에 적용할 고유 매개변수 세트 설정
본 단계에서 리소스 그룹을 만들어 리소스 구성

✔️ 4단계: 리소스 배포, 검토 및 관리
리소스 그룹 생성 후 AWS System Manager 콘솔에서 리소스를 보고 관리할 수 있음
자동화 workflow를 생성, 패치 관리, 리소스에 대한 기타 작업 수행 가능
⭐️ AWS System Manager를 통해 리소스의 운영을 자동화할 수 있고 AWS 인프라 전체에서 운영 데이터를 시각화하고 모니터링이 가능해져 사용자가 문제를 더 빠르게 식별하고 해결하여 운영 효율성을 향상하고 가동 중지 시간을 줄일 수 있음
✔️ 개발자가 private Git 레포지토리를 쉽게 호스팅하고 관리할 수 있도록 하는 완전 관리형 소스 제어 서비스
AWS CodeCommit을 통해 팀이 공동으로 작업한 코드를 클라우드에 안전하게 저장, 액세스를 안전하게 제어할 수 있고 암호화 및 자동 백업 지원
"CodeCommit vs GitHub" 리소스 참조
AWS CodeCommit의 목표는 여러 파일 전체에 걸쳐 일괄 변경 사항을 처리하고 개발자가 이를 비공개로 저장하고 관리하는데 도움을 주는 것
GitHub의 목표는 여러 공동 작업자 코드가 가질 수 있는 모든 충돌 변경 사항을 처리하는 도구를 제공해 더 효과적으로 공동 작업을 수행할 수 있도록 함
AWS CodeCommit은 사용 가능한 광범위한 private repository를 찾는 사람에게 적합하고, GitHub는 협업 솔루션을 찾는 사람에게 적합
✔️ 개발자는 강력한 코드 리뷰 및 workflow 도구를 사용하여 Git 레포지토리를 쉽게 생성, 관리 및 협업 가능
✔️ AWS CodeCommit의 주요 기능
코드 리뷰와 pull request를 지원하는 Git 기반 레포지토리
안전한 액세스 제어를 위해 AWS IAM(Identity and Access Management)와 통합 가능 => 큰 장점
저장 및 전송 중인 데이터 암호화
자동 백업 및 장애 조치 기능 => 확장성과 가용성이 뛰어남
다른 AWS 개발자 도구와 통합 가능. ex. AWS CodePipeline, AWS CodeBuild
⭐️ 전반적으로 코드에 대해 협력하고, 레포지토리를 안전하게 관리하고, 개발 workflow를 간소화해야하는 팀을 위한 강력한 도구
⭐️ CodeCommit을 효과적으로 활용하려면 Git 사용법을 아는 것이 좋음
✔️ CodePipeline은 IaC 또는 소프트웨어 릴리즈 프로세스를 자동화할 수 있는 완전관리형 지속적 전달 서비스
코드 변경 사항을 지속적이고 안정적으로 빌드, 테스트 및 배포하는 pipeline 생성 가능
이를 통해 더 빠른 릴리즈 주기를 달성하고, 개발 및 운영 팀 간의 협업을 개선하고, 소프트웨어 릴리즈의 전반적인 품질과 안정성을 향상시킬 수 있음

✔️ AWS CodePipeline과 통합되는 다른 AWS 서비스
Source Action Integrations
Build Action Integrations
Test Action Integrations
Deploy Action Integrations
Approval Action Integrations
Invoke Action Integrations
✔️ AWS 서비스 이외의 GitHub, Jenkins, Bitbucket과 같은 타사 도구와도 통합 가능
✔️ CodePipeline을 사용하여 여러 AWS 계정 및 region에서 애플리케이션 업데이트 관리 가능
✔️ 1단계: IAM role 생성
✔️ 2단계: CodePipeline 파이프라인 생성
AWS CodePipeline 콘솔로 이동하여 CodePipeline 생성
코드의 소스 위치, 사용할 빌드 공급자, 사용할 배포 공급자 등에 따라 IAM role 지정
✔️ 3단계: 코드 변경 사항 테스트 및 배포
CodePipeline 파이프라인을 생성한 후 코드 변경 사항을 자동으로 구축, 테스트하고 환경에 배포
AWS CodePipeline 콘솔에서 파이프라인의 진행 상황 모니터링 가능
⭐️ AWS CodePipeline을 통해 다양한 도구와의 통합이 가능하며, 코드 변경 사항을 지속적이고 안정적으로 빌드, 테스트 및 배포하는 pipeline 생성하여 더 빠른 릴리즈 주기를 달성하고, 개발 및 운영 팀 간의 협업을 개선하고, 소프트웨어 릴리즈의 전반적인 품질과 안정성을 향상시킬 수 있음