AWS
16 posts
[AWS architect] 13. 백업 및 복구, 재해대책

개요 재해 발생 시 인프라를 보호하는데 사용할 수 있는 전략은 무엇인가 백 가동 중단 시간을 최소화하면서도 비용 효율적인 방안은 무엇인가 가용성 고가용성 내결함성 백업 재해 복구 RPO, RTO RPO : 데이터 백업해야 하는 빈도 RTO : 복구하는데 걸리는 시간 스토리지 복제 Amazon S3 : cross-region replica Amazon EBS : 스냅샷을 떠서 S3에 저장할 수 있다. 복구용 AMI 구성 데이터베이스 백업 및 복제 RDS DynamoDB AWS backup 지속적인 학습 실습 링크 : https://us-east-1.student.classrooms.aws.training/class/5Hg5hDtgWR8wnGDGevtJcR 실습 참고 영상 : https://us-east-1.student.classrooms.aws.training/class/5Hg5hDtgWR8wnGDGevtJcR AWS architecture 그리기 https://aws.amazon…

July 08, 2022
AWS
DevOps
[AWS architect] 12. Edge service

개요 Route 53 CloudFront 정적 콘텐츠 캐싱 뿐만 아니라 동적 콘텐츠 가속화 ( AWS 고속 네트웍 망 활용) 하는 데에도 사용된다. 성능 개선 DDoS 보호 정상 패킷으로 공격 OSI 계층 공격 AWS Shield AWS WAF 6,7 계층 공격 방어 DDoS 복원력 참조 아키텍처 AWS outposts AWS 장비를 on-premise로 가져와서 private하게 사용하되, AWS의 코어 서비스를 활용할 수 있다. 실습

July 08, 2022
AWS
DevOps
[AWS architect] 11. Serverless

개요 Serverless란 프로비저닝, 관리할 인프라 없음 소비 단위에 따라 자동으로 scaling 내장된 보안/고가용성 컴퓨팅 [AWS 서버리스 서비스 목록 이미지] 서버리스 아키텍처 예시 Amazon API Gateway cognito, lambda 등을 통해 인증 붙일 수 있음 샘플 아키텍처 Amazon SQS 완전관리형 메시지 대기열 서비스 표준 대기열은 순서가 완전히 보장되지는 않는다. FIFO는 보장 Amazon SNS Amazon Kinesis AWS Step Functions 시각적 워크플로우를 사용한 마이크로서비스 조정 각 단계를 자동으로 시작하고 추적할 수 있다. 로그 및 시각화 제공 [이미지] Amazon State Language 실습 : 서버리스 아키텍처 구축

July 08, 2022
AWS
DevOps
[AWS architect] 10. Networking2

개요 AWS 서비스에 대한 연결을 프라이빗 상태로 유지할 수 있는가 VPC 간에 private 방식으로 트래픽을 라우팅하려면? 온프레이미스 <-> AWS 를 연결하려면 VPC Endpoint internet gateway 타지 않고 privateg하게 private subnet내에 있는 EC2 instance와 AWS 완전 관리형 서비스인 DynamoDB를 통신하게 할 수 있다. VPC Endpoint가 없다면 NAT를 타고 IGW를 타고 통신해야 한다. VPC 만들 때 Gateway endpoint와 Interface endpoint 하나 씩만 최초에 만들어주면 된다. Gateway endpoint 라우팅 테이블에 지정된 대상 S3, Dynamo DB 서비스 지원 추가 비용 없음 Interface endpoint private IP의 ENI를 통해 서비스와 통신한다고 이해하면 됨 추가 비용 존재 VPC endpoint도 리소스이므로 리소스 기반 정책을 적용할 수 있다. [심층 방…

July 08, 2022
AWS
DevOps
[AWS architect] 9. 컨테이너

AWS애서의 컨테이너 실행 컨테이너 오케스트레이션 EKS : AWS에서 지원하는 k8s 사용 툴 ECS : AWS에서 개발한 오케스트레이션 툴 ECR : AWS에서 개발한 고가용성 Container registry Fargate, EC2 : 컨테이너 호스팅 EC2의 유휴 리소스를 컨테이너가 다 활용하지 못하면 리소스 낭비이기 때문에 Fargate가 등장하게 되어 컨테이너를 서비리스하게 사용하게 되었음. K8S 아키텍처 [이미지] Amazon EKS controlplane은 AWS가 관리해준다. 워크로드는 Fargate를 활용하거나 EC2를 활용하여 워커노드를 구성한다. EKS workshop을 통해서 EKS 실습해볼 수 있다.

July 07, 2022
AWS
DevOps
[AWS architect] 7. AWS Monitoring

AWS Cloudwatch AWS의 모든 자원은 cloudwatch에 의해서 모니터링 된다. CloudWatch Logs AWS CloudTrail AWS 인프라에서 계정활동을 로깅/모니터링 한다. CloudTrail 로그 예시 VPC 흐름 로그 [image] 송/수신 되는 ip 트래픽에 대한 정보를 모두 수집하여 볼 수 있다. 네트웍 트러블슈팅 시 사용됨 Kinesis Firehose 활용 -> Datadog, splunk Elasticsearch 와 같은 SaaS 연동하기에 용이함 사용자 정의 로그 logback에서 수집한 로그를 CloudWatch agent를 설치하여 연동함으로써 Amazon CloudWatch Logs로 전송할 수 있다. CloudWatch 경보 [417 image] Eventbridge ELB (elastic load balancing) L4/L7 역할, round-robin이 디폴트. 상태확인 수행하여 문제 있을 시 그 쪽으로 안 보냄 무조건 2개 이상…

July 06, 2022
AWS
DevOps
[AWS architect] 8. AWS 자동화

IaC IaC의 장점 : 재사용성과 업데이트 AWS CloudFormation CloudFormation > Stack > create Stack에서 IaC yaml파일을 등록하여 한 꺼번에 프로비저닝 할 수 있다. AWS 대부분의 리소스를 CloudFormation 템플릿으로 제어할 수 있다. AWS Elastic Beanstalk 웹 콘솔에서 클릭으로 할 수 있기 때문에 편의성 면에서 프로비저닝하기 더 좋다. AWS CDK(Cloud Development Kit) python, typescript 등의 언어로 컴파일하여 CloudFormation template을 만들어준다. [보충 이미지] AWS 솔루션 라이브러리 사전 구축된 참조 아키텍처이며 도메인 별로 활용될 수 있는 다양한 아키텍처를 확인할 수 있다. CloudFormation 파일을 제공하는 아키텍처들도 있다. AWS Systems Manager 실습 3: AWS VPC 인프라에 데이터베이스 계층 생성 [실습 아키 이…

July 06, 2022
AWS
DevOps
[AWS architect] 6. AWS Database 서비스

개요 AWS 데이터베이스 솔루션은 무엇인가 클라우드에서 RDB를 더욱 효율적으로 관리할 수 있는 방법은 무엇인가 확장 가능한 key-value NoSQL을 구축하려면 어떻게 해야하는가? AWS 클라우드에서 데이터베이스를 캐시하는 방법은 무엇인가 기존 DB에서 AWS 클라우드로 마이그레이션 할 때 사용하는 도구는 무엇인가 RDB 및 NoSQL [image] 여러가지 AWS 데이터베이스 서비스 RDS, Aurora, DynamoDB외에도 Neptune등 많은 서비스가 있음 크기 조정, 고가용성, DB백업, DB s/w 패치, 설치 OS 패치 등의 작업을 사용자가 직접할 필요 없음 크기 조정 시 blue-green deploy도 지원하여 서비스 다운타임도 없앴을 수 있음 RDS [이미지] RDS Multi AZ 배포 stanby instance를 primary instance와 다른 AZ에 두고, 동기화 복제를 사용한다. primary instance가 fail 되면 stanby가 바로…

July 06, 2022
AWS
DevOps
[AWS architect] 5. AWS Storage

개요 블록/파일/객체 스토리지를 검토할 때 고려해야 하는 서비스는 무엇인가? 사용 사례에 적합한 객체 스토리지 솔루션을 어떻게 선택하는가? AWS에서 안전하고 확장 가능한 보안 스토리지를 구축하기 위한 파일 기반 옵션은 무엇인가? 어떻게 하면 짧은 시간 내에 대량의 데이터를 클라우드로 이관할 수 있는가? 스토리지(다시 듣기) 스토리지는 일반적으로 3개의 타입으로 나뉜다. 블록 스토리지 원시 스토리지 데이터가 관련 없는 블록의 어레이로 구성된다. 읽기/쓰기 자유 하드디스크, SAN 파일 스토리지 NAS 객체 스토리지 블록/파일 스토리지와 달리 디스크에 마운트 되지 않는 솔루션이다. http요청에 의해서 쓴다. ‘비연결 기반’이기 때문에 확장성이 매우 높다. 저장된 객체에 대한 unique key가 존재한다. [254 이미지] Amazon S3 버킷을 만들 때 용량을 설정하지 않는다. 용량이 무제한임 버킷에 데이터를 넣으면 3개 이상의 가용영역에 데이터를 복제하여 매우 고가용성이다. …

July 06, 2022
AWS
DevOps
[AWS architect] 3. Networking 기초

개요 워크로드를 지원하기 위해 충분한 IP주소가 네트웍에 있는 지를 어떻게 확인하는가? AWS 계정에 안전한 동적 네트워크 인프라륵 구축하는 방법은 무엇인가? 네트워크의 리소스 보호를 위해 인/아웃바운드 트래픽을 필터링하는 방법은 무엇인가? IP 주소 지정 -> 워크로드를 지원하기 위해 충분한 IP주소가 네트웍에 있는 지를 어떻게 확인하는 하는가? -> 즉 데이터 센터를 얼마나 크게 지을 것인가와도 관련이 있다. ip주소는 네트워크와 호스트를 식별한다. IPV4는 고갈되었기 때문에 NAT 대역을 사용하며 RFC1918규약에 따라 보통 10.대역, 192. ,172. 대역을 사용한다. CIDR ( classless inter-domain routing ) IP를 예전에는 클래스 단위로 나누었지만 해당 방법은 비효율적이어서 CIDR방법을 요즘에는 사용한다. VPC에서 지원되는 CIDR블록 /16 : 65536개 … /28 : 16개 VPC(Virtual Private Cloud)…

July 05, 2022
AWS
DevOps
[AWS architect] 4. Computing

개요 EC2에 서버를 배포할 때 고려해야 할 사항이 무엇인가? EC2에 연결할 볼륨 유형을 어떻게 알 수 있는가?(EBS) 비용을 최적화 하는 방법은 무엇인가? 서버리스 컴퓨팅 옵션은 어디서부터 시작할 있는가? EC2 인스턴스 생성 시 고려사항 이름/태그 태그 룰 지정 : enterprise레벨에서는 중요햐다. [ 태그 룰 이미지 ] AMI(Amazon Machine Image) : OS image + 필요한 설정 enterprise 레벨에서는 기본 AMI에 보안 등의 설정을 추가하여 ‘사용자 지정 AMI’로 만들어서 사용한다. 인스턴스 유형 이해 [ 인스턴스 유형 이름 이미지 ] 인스턴스 패밀리 범용 : T3, M5 메모리 최적화 : R5 스토리지 최적화 : I3 컴퓨팅 최적화 : C5 가속 컴퓨팅 : G4, F1 인스턴스 세대 : 최신 세대를 쓰는 것이 오히려 비용이 더 줄어듬. 추가 속성 : g(graviton), a(amd) 등 인스턴스 크기 : xlarge, 2xlarge…

July 05, 2022
AWS
DevOps
[AWS architect] 2. Account & Security

보안 주체와 자격증명 보안주체란 AWS리소스에 대한 작업을 요청할 수 있는 엔티티 root user IAM user IAM group Role IAM 구성요소 User Group : user는 여러 그룹에 속할 수 있다. Policy : json으로 구성된 권한을 담은 document Role : 임시 권한 부여(안전모)할 떄 사용 보안 정책 IAM 자격증명 기반 정책 ( 열쇠 들고 따고 들어가는 유형 ) IAM리소스 기반 정책 ( 경비원이 문 열어주는 유형 ) IAM 자격 증명 기반 정책 자격 증명 기반 정책의 경우 아래와 같다. 서비스 액세스 AmazonEC2FullAccess AmazonEC2ReadOnlyAccess 직무 AdministratorAccess Billing 사용자 정의 정책 DiChaTeam … 자격증명 기반 정책은 다음과 같이 작성할 수 있다. IAM 리소스 기반 정책 리소스 기반의 정책은 S3버킷이나 Lambda함수와 같은 단일 리소스에 연결되며 어떤…

July 05, 2022
AWS
DevOps
[AWS architect] 1. Architecting 기초

AWS 인프라 AWS는 2023년 7월 현재 전 세계 31개의 리전(region)을 지원하며, 각 리전은 최소 3개 이상의 가용영역(Availability zone)으로 이루어져 있다. 각 가용영역은 1개 이상의 데이터 센터로 구성되어 있다. Region Availability zone Local zone Edge location 어떤 리전을 선택해야 하는가? 법규(governence) 지연시간(latency) 서비스(AWS service) : 리전 별로 지원하는 서비스 수가 다름 비용 : 예컨대 상파울로 리전은 브라질 현지 전기 사정이 안 좋아서 직접 발전기까지 돌리기 때문에 cost가 비쌈 로컬 존(Local zone) region을 만들기까지는 애매한 지리적 위치에 있는 사용자에게 낮은 latency로 서비스를 제공하고자 할 떄 사용된다. 예컨대 Oregon region 안에는 LA의 로컬 존이 있다.(oregon<->LA거리 약 1000km) AWS에서는 LA가 별도 reg…

July 05, 2022
AWS
DevOps
[AWS] Spring boot에서 AWS S3로 파일 업로드하면서 DB에 URL 저장하는 방법

Spring boot 개발환경에서 AWS S3를 활용하여 파일을 업로드하고 이를 DB를 URL로 저장하는 방법과 파일 명을 이용해서 S3로부터 파일을 다운로드 하는 방법에 대해서 알아보자. 1. Spring boot 의존성, 환경 설정 build.gradle app.properties 2. S3 Config 클래스 설정 위 application.properties에서 설정한 accessKey, secretkey, region값을 @Value 어노테이션을 활용하여 AwsS3Config 클래스에서 가져와서 AWSCredential을 설정한다. 이 때 나는 jasypt를 활용해서 key값을 보호하도록 했는데 해당 내용은 이 글을 참고하자. 3. S3 업로드 Controller 설정 나는 본 글의 title처럼 Club이라는 entity를 생성할 때 S3에 썸네일 이미지가 업로드 됨과 동시에 DB에 S3에 업로드된 이미지의 URL도 저장되도록 설정하도록 하였다. 그리고 그러기 위해서 @R…

April 23, 2022
AWS
[AWS] AWS key값을 Jasypt를 이용해서 보호하자

Spring boot 환경에서 AWS S3를 연동해서 사용하려고 하면, application.yml 또는 application.properties에 아 래와 같이 accessKey, secretKey값을 설정해줄 것이다. 그런데 이렇게 설정을 하게 되면 AWS의 accessKey, secretKey값이 깃헙에 노출되는 문제가 발생한다. 이미 나는 그걸 모르고 별일 없겠지라는 안일한 생각으로 깃헙에 코드를 푸시했다가 이틀 만에 해킹(ㅠㅠ) 당하는 일을 겪어야 했다. 이틀 만에 80 달러 치를 썼더라 해커놈 ㅡㅡ 그러니 반드시 Jasypt를 활용해서 AWS key값을 암호화해서 올리시길 바란다. Jasypt : Java Simplified Encryption으로 암호화를 위한 Library이다. 보통 프로퍼티에 노출되는 중요 정보들을 암호화 해주는 용도로 사용한다. 1. 의존성 설정 ( build.gradle ) 나는 gradle을 사용하기 때문에 아래와 같이 간단한게 jasypt를 …

April 15, 2022
AWS
Spring boot 개발환경 설정 (gradle,JPA,MySQL,EC2,RDS)

1. AWS에서 프리티어로 EC2와 RDS 발급하기 1) EC2 인스턴스 발급 AWS 에 들어가서 EC2 인스턴스 생성하기로 가서 생성하면 된다. 프리티어로 발급 가능한 인스턴스를 발급 받았다. 발급 시 신경 써 주어야 할 부분은 프리티어에서 사용 가능한 최대 스토리지 설정(30GB)과 보안그룹에서 규칙을 설정하는 것이다. 보안그룹을 설정하지 않으면 생성한 EC2 서버로 모든 통신이 불가능하기 때문에 필요한 port와 사용자에 대해 꼭 설정해주어야 함! 나는 Front/Back-end를 위해 각각 3000,8080포트를 모든 사용자에게 허용하고 http,https를 통한 접근 허용을 위해 80,443 포트도 열어두었다. 2) EC2 ssh 접속 테스트 Windows에선 putty 설치해서, Mac에선 ssh 커맨드라인 툴을 이용해서 ssh priavte key를 사용해서 접속하면 된다. 계정명은 ubuntu로 초기 로그인이 되며 su 명령어를 통해 root로 유저를 변경하여 roo…

February 04, 2022
AWS