*DevOps 장점
ML은 빠른 릴리즈가 경쟁력
안정적 배포, 품질
빠른 릴리즈, 속도
비용절감
*애자일 소프트웨어 개발 선언
- 공정과 도구보다 개인과 상호작용을
- 포괄적인 문서보다 작동하는 소프트웨어를
- 계약 협상보다 고객과의 협력을
- 계획을 따르기보다 변화에 대응하기를
*유명한 책들
마틴 파울러 - 리팩토링
실용주의 프로그래머
*개발 + 운영 = 데브옵스
- 속도
- 빠른 전달
- 신뢰성
- 확장성
- 협업 개선
- 보안
*AWS 에서 제공하는 DevOps 도구
- 인프라 프로비저닝 및 관리
- 애플리케이션 코드 배포
- 소프트웨어 릴리스 프로세스 자동화
- 애플리케이션 및 인프라 성능 모니터링 간소화
- 버젼 제어 : CodeCommit
- 지속적 통합 및 지속적 전달 : CodePipeline, CodeBuild, CodeDeploy, CodeStar
- 마이크로 서비스 : ECS, Lambda
- 서비스로서의 플랫폼 : Elastic Beanstalk
- 코드형 인프라 : CloudFormation, OpsWorks, Systems Manager
- 모니터링 및 로깅 : CloudWatch(리소스), CloudTrail(사용을 추적, 누가 언제 어떤 명령을), Config, X-Ray(어플리케이션 단위에서의 모니터링)
*데브옵스 방식의 구성 요소
- 모든 단계 자동화
- 코드형 인프라 관리
*Git
- 코드 리뷰 기능 있음
*코드 리뷰를 할 때 봐야 할 것
- (1) 가독성
- (2) 이슈가 등록이 되고 + 커밋 하기 전에 이슈 넘버를 입력 + 이슈 트랙커
- (3) test 코드가 잘 구현되어 있는가
*코드 리뷰
- 소프트웨어 품질
- 제일 못하는 사람에 의해 품질 결정(음의 생산성)
- BottomLine을 끌어 올릴 수 있다.
- 꼭 해야 한다.
*AMI(Amazon Machine Image)
*CI(Continuous Integration) 서버
*테스트 자동화 = 믿을 수 있는 안전망
- 고통 없는 혁신으로 이어짐
*지속적 전달
*지속적 모니터링 및 개선
*데브옵스 지표
- 변경 볼륨
- 배포 빈도
- 개발에서 배포까지 소요 시간
- 실패한 배포 비율
- 가용성
- 고객 티켓 볼륨
- 사용자 볼륨의 비율 변경
*애플리케이션 성능 지표
- 변경 볼륨
- 애플리케이션 성능 모니터링
- 필요에 따라 리소스를 확장 또는 축소
- 성능 병목 현상이 발생하거나 사용률이 저조한 리소스를 개발 팀에 통보
*코드형 인프라
*구성 관리
- 리소스 구성을 자동화 및 표준화하는 프로세스
- Chef, Puppet, AWS 서비스
*마이크로 서비스
- 모놀리식
- 과도기 SOA : 2000년 초~2010년, 데이터베이스를 하나로 가져가려고 해서 문제 발생(성능에 대한 요구사항, 복잡도)
- 데이터 베이스를 각자 가져가면서 해결 : 이것이 마이크로 서비스
*마이크로 서비스의 구조
- 데이터 스토어
- 애플리케이션 로직
- 퍼블릭 API
*연간 5천만 회 배포
= 수천개의 팀 * 마이크로 서비스 아키텍처 * 지속적 배포 * 다양한 개발 환경
*CLI 의 집합
스크립트화 할 수 있는 것들은 스크립트로
*AWS CLI(Command Line Interface, 명령줄 인터페이스) : AWS 서비스를 관리하는 통합 도구
*AWS CLI 설치
*AWS CLI 구성
- 명령줄 옵션 : --output
- 명령줄 옵션 : --profile
- 명령줄 옵션 : --query
- 명령줄 옵션 : --filter
- 명령줄 옵션 : --filter by tag
- 명령줄 옵션 : -wait
*JSON 템플릿 사용하기
*AWS CLI를 사용한 Amaaon S3
*JMESPath : 원하는 속성만 포함하도록 응답 데이터를 필터링한다.
*AWS CLI를 사용한 Amazon S3 스트리밍
- 표준 입력에서 파일을 스트리밍하여 Amazon S3로 업로드
*CloudFormation 으로 wait 사용하기
*GraphQL
- 페이스북에서 만든 쿼리 언어
*계정 탈퇴 = Disabled 상태
*ARN
- Amazon Resource Name
*IAM
- Identity and Access Management
*DevSecOps
- 보안 강화
- 빌드 기간 단축
- 안정성 개선
*DevSecOps
- 자동화된 보안
- 개인이 아닌 팀으로 활동
- 수명 주기 속도에 영향을 주지 않고 빌딩 블록을 검증
*DevSecOps 원칙
- 이해 당사자와의 협력
- 모든 것을 코드화
- 모든 것을 테스트
- 모든 것을 자동화
- 모든 것을 측정하고 모니터링
- 지속적인 피드백과 함께 비즈니스 가치 전달
*DevSecOps 방식
- (1) CI/CD 파이프라인의 보안
- (2) CI/CD 파이프라인 내에서의 보안
- (3) 인프라 자동화
*DevOps와 CI/CD, DevSecOps
- 코드
- 빌드
- 테스트
- 배포
- 프로비저닝
- 모니터링
*CloudFormation Primer
- '템플릿' 정의 가능 : 다양한 리소스로 구성, 템플릿을 반복 가능한 라이브 스택으로 프로비저닝, 리소스에 대한 직/간접적인 액세스
- 코드로 취급 : 인프라에 대한 소스 제어
- 소유권 분리 구성 : 소유권 위임(인프라, 데브옵스, 보안), YAML 사용, 파일을 청크와 함수로 분리, AWS CodePipeline 또는 Jenkins를 통한 배포
*모범 사례
- '규정 준수 상태'를 통한 용이한 파악
- 미인가 계정에 의한 변경 방지
- 중대 이벤트에 대한 자동 대응 조치
- 프로덕션 환경으로의 자동 배포
*IAM(Identity and Access Management)
- 사용자, 보안 자격 증명, 권한을 중앙에서 관리
- 사용자 또는 API 액세스를 위한 계정을 생성
- 액세스 키와 같은 장기 자격 증명을 지정
*IAM 자격 증명
- 여러 유형의 자격 증명
- 보안 강화를 위해 MFA 사용
- 액세스 키/보안 키
- 사용자 이름/암호
*IAM 정책
- 사용자가 모든 인스턴스를 설명, 시작, 중지, 실행 및 종료할 수 있도록 허용하는 정책
*임시 자격 증명
- IAM 역할
- 교차 계정 액세스
- 자격 증명 연동
*Security Token Service
- AssumeRole, AssumeRoleWithWebIdentity, AssumeRolewithSAML, GetFederationToken, GetSessionToken
*Spring FrameWork
The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform
*Netflix
- ChaosMonkey
- ChaosGorilla
- ChaosKingKong
*역할 전환
- 최소한의 권한 원칙을 실천
*역할 전환 방법
- AWS 교차 계정 액세스
*MFA(Multi-Factor Authentication)
- 임시 보안 자격 증명을 사용하는 경우에만 제공됨
- 루트 계정 자격 증명으로는 사용할 수 없음
- 장기 자격 증명은 지원되지 않음
- 연동 사용자에게는 적용되지 않음
- 정책에 MFA 조건이 포함된 경우에만 적용됨
*AWS Organization
- 복수의 AWS 계정을 정책을 바탕으로 관리할 수 있는 제품
*AWS 복수 계정 보안 전략
*IAM 정책 시뮬레이터
*CLI를 통한 정책 시뮬레이터 사용
*AWS Billing 콘솔에 대한 권한 위임
*KMS키, 보안 문자열 파라미터
*Parameter Store 사용 이점
- 암호, 데이터베이스 문자열, 라이선스 코드와 같은 구성 데이터에 대해 보안 스토리지를 제공
*Secrets Manager
*License Manager
*Config
- AWS 리소스의 구성을 검토하고 감사하고 평가할 수 있음
*GuardDuty
- 의심스러운 활동이 있는지 모니터링
- 알려진 위협 감지
- 알려지지 않은 위협 감지
*Amazon Macie
- 기계 학습을 통한 데이터 보안 자동화
- 지금 현재는 S3에만 쓸 수 있다.
- 보다 우수한 데이터 가시성
- 간편한 설치, 쉬운 관리
- CloudWatch를 통한 사용자 정의 알림 모니터링
- GDPR 유럽의 개인정보 보호법 이후로 도입
- 한글 안됨
*DynamoDB
Amazon DynamoDB is a fully managed proprietary NoSQL database service that supports key-value and document data structures and is offered by Amazon.com as part of the Amazon Web Services portfolio. DynamoDB exposes a similar data model to and derives its name from Dynamo, but has a different underlying implementation.
'스타트업 > AWS' 카테고리의 다른 글
[AWS] DevOps #3 (0) | 2020.02.13 |
---|---|
[AWS] DevOps #2 (0) | 2020.02.13 |
[AWS] Amazon Elastic File System(EFS) (0) | 2020.01.08 |
[AWS] RAID (0) | 2020.01.07 |
[AWS] Amazon Graviton2 Chip (0) | 2020.01.07 |