AWS (Amazon Web Services)
- 아마존에서 개발한 클라우트 컴퓨팅 시스템
- on - premise : 기업 자체적으로 버유한 전산실 서버에 직접 설치해 운영하는 방식
- cloud computing : 인터넷을 통해 데이터를 저장하거나 , 데이터베이스, 서버 , 네트워킹, 소프트웨어 같은 도구 , 어플리케이션 등 다양한 서비스를 제공하는 방식. 이 방식을 사용함으로써 관리 비용을 줄일 수있다.
AWS VPC (Virtual Private Cloud)
가상 네트워크 서비스와 퍼블릭 네트워크와 프라이빗 네트워크를 분리하고 모니터링을 할 수 있도록 해주는 서비스 즉, 독립된 가상의 네트워크 서비스 이다.
- 네트워크 구성과 관련된 사실상 모든 기능을 담당한다.
- 그림을 보면 ,인터넷 게이트웨이(입구)를 통해서 요청이 들어오면 라우터를 거쳐 프라이빗 서브넷으로 퍼블릿 서브넷으로 이동한다.
- VPC 안에 구성할 수 있는 서브넷 속성으로는 퍼블릿 서브넷과 프라이빗 서브넷이 있다. 서브넷은 VPC영역 안에서 망을 쪼개는 데 사용한다.
- 퍼블릿 서브넷은 인터넷 연결이 되는, 외부에서 접근이 가능한 공공 네트워크 영역을 말한다. 주로 서버를 위치 시킨다.
- 프라이빗 서브넷은 인터넷 연결이 되지 않고, 외부에서 접근이 불가능한 서브넷을 말한다.
NAT Gateway(Network Address Transition)
Nat Gateway는 Nat (네트워크 주소 변환) 서비스이다.
외부 서비스에서 프라이빗 서브넷의 인스턴스로 접근할 수 없게 하고, 프라이빗 서브넷의 인스턴스에서는 외부 서비스로 접근할 수 있게 해주는 서비스이다.
대게 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 ip 주소를 사용해 인터넷에 접속하기 위함이다.
프라이빗 서브넷 영역을 사용하게 될 경우 외부 인터넷 네트워크와 방화벽에 막혀있어 서로 통신이 불가능하다. 이때 만약 프라이빗 서브넷에 위치한 인스턴스가 다른 서비스에 접근을 해야할때 NAT를 사용하면 된다.
퍼블릿 서브넷에 Nat Gateway를 생성하고, 프라이빗 서브넷에 적용된 route table에 Nat Gateway를 추가하면 된다.
- NAT 사용목적
- 공인 IP 주소 부족 문제 해결 : 인터넷의 공인 IP 주소는 한정되어 있기 때문에 가급적 이를 공유할 수 있도록 해야하는데 NAT를 이용하면 사설 IP 주소를 사용하면서 공인 IP주소와 상호 변환할 수 있도록 하며, 공인 IP 주소를 다수와 함께 사용할 수 있도록 해 이를 절약할 수 있다.
- 보안성 : NAT는 ip를 숨길 수 있는 기능이 있는데, 프라이빗 IP가 퍼블릭 IP 로 주소가 바뀌므로 공격자가 라우터 안에 있는 프라이빗 IP를 모르기 때문에 공격이 어려워져 내부 네트워크를 보안할 수 있다.
Amazon API Gateway
먼저 API Gateway란 인증/ 모니터링/ 오케스트레이션과 같은 기능을 포함한 Reverse Proxy로 Amazon API Gateway, Spring Cloud Gateway, Neflix zuu이 있다.
MSA가 생기면서 서비스를 보다 작은 단위로 분리해 관리할 필요가 생겼는데 이 작은 단위로 나누어진 서비스들의 엔드포인트를 통합적으로 관리하는게 API Gateway이다. API Gateway를 사용하면 각 서비스의 엔드포인트 대신 API Gateway로 요청을 보내고, 이 요청을 받은 Api Gateway가 각 서비스들의 엔드포인트들에게 요청을 보낸다.
Amazon API gateway는 개발자가 API 를 손쉽게 생성, 게시 , 유지 관리 모니터링 및 보안 유지를 할수 있도록하는 완전 관리형 서비스이다.
- 트래픽 관리 , cors 지원, 권한 부여 및 억세스 제어, 제한, 모니터같은 역할을 한다.
- 즉, API가 지나가는 통로, 서버의 출입문이라고 생각하면 된다.
AWS ELB (Elastic Load Balancing)
ELB는 다수의 컴퓨팅 리소스(EC2, Lambda 등등) 를 부하 분산시켜주는 중요한 서비스이다.즉, 로드 밸런싱을 제공한다.
- 트래픽 분산, 자동확장, SSL 암호화 지원같은 기능을 지원한다.
- 참고로 aws에서 로드밸런싱 서비스를 제공하지만, nginx 자체 설정으로도 로드밸런싱을 진행할 수 있다. ELB는 여러 어플리케이션 또는 서비스를 지원하는 데 필요한 별도의 로드 밸런서 인스턴스를 생성해야하지만, nginx는 별도로 인스턴스를 구성할 필요는 없다.
- 3가지 종류의 Balancer가 존재한다.
- ALB (application load balancer) : 가장 일반적으로 많이 쓰이는 로드 밸런서. OSI7 계층에서 7계층인 Application Layer를 다루는 L7 로드밸런서이다. HTTP, HTTPS 트래픽을 로드밸런싱해서 내부 인스턴스에 전달한다.
- GLB( gateway load balancer) : L3 로드밸런서. 네트워크 계층에서 작동한다.
- NLB( network load balancer): L4 로드밸런서. TCP/UDP 트래픽을 로드밸런싱해서 내부 인스텉스에 전달한다.
AWS S3(Simple Storage Service)
이미지, 동영상, 오디오 파일과 같은 정적파일들을 용이하게 관리하도록 돕는 스토리지 서비스 즉 데이터를 저장하는 스토리지 플랫폼이다. 하지만 단순히 파일을 저장하는 것이 아니라 위와 같은 기능을 제공한다.
- 데이터처리 : s3에 저장되는 trigger를 이용해 람다를 실행 시킬 수도있음.
- 로그 : aws안에서 이뤄지는 모든 로그는 s3에 저장됨
- 쿼리 지원 : aws athena를 통해 s3에 저장된 파일을 쿼리할 수도 있음.
- 호스팅 : react를 호스트할 수도 있음.
- 관련 용어
- 객체(object) - s3에 저장된 데이터 하나 하나를 객체라고 한다.
- 버킷 (bucker) - 객체가 파일이라면 버킷은 객체들을 그루핑한 최상위 디렉토리이다. 버킷에 포함된 모든 객체에 대해 일괄적으로 인증과 접속 제한을 걸 수 있다.
- RSS (Reduced Redundancy Storage) - 일반 s3 객체에 비해서 데이터가 손실될 확률이 높은 형태의 저장 방식. 대신 가격이 저렴하기 때문에 복원이 가능한 데이터 썸네일같은 이미지를 저장하는데 적합하다.
AWS CloudFront(CDN)
CDN (Contents Delivery Networt)
먼저 CDN이란 콘텐츠 전송 네트워크로 지리적으로 분산된 여러개의 서버를 말한다. 웹 콘텐츠를 사용자와 가까운 곳에서 전송함으로써 전송 속도를 높인다.
전 세계 데이터센터는 파일 복사본을 임시로 저장하는 프로세스인 캐싱을 사용한다. 따라서 사용자는 가까운 서버를 통해 콘텐츠에 빠르게 접속할 수 있다.
예시를 들면 뉴욕에 있는 사용자가 영국의 서버에 호스팅된 업체의 웹사이트를 보고 싶어 한다면 ,해당 사용자가 뉴욕에서 영국까지 대서양을 가로질러 요청을 보내면 웹 사이트의 콘텐츠 로딩시간을 길어질 것이다. 따라서 CDN은 이러한 문제를 해결하기 위해 런던 웹 사이트 콘텐츠를 캐싱해 전 세계 여러곳에 저장해두어 뉴욕에 있는 사용자에 해당 콘텐츠를 전송한다.
AWS는 AWS CloudFront라는 CDN 서비스를 지원한다.
캐싱을 통해 사용자에게 좀 더 빠른 전송 속도를 제공함을 목적으로하는 서비스이다.
- .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원한다.
- 전 세계에 있는 AWS 엣지 로케이션을 두고 사용자게에 가장 가까은 엣지 로케이션을 찾아
- Origin server : 원본 데이터를 가지고 있는 서버. 보통 S3를 말한다.
- 엣지로케이션(Edge servcer = Edge Location) - 전 세계에 퍼져있는 서버 . 캐시기능을 제공한다.
AWS Secrets Manager
데이터 베이스 보안 인증 정보 및 API 키와 같은 보안 정보를 안전하게 암호화하고 중앙 집중식으로 감사할수있도록 도와주는 서비스
- .env 서버 별로 따로 관리하기보다는 집중적으로 관리
- DB정보와 같은 민감한 정보는 암호화가 지원이 되는 Secret Manager에 저장. 즉 자바 환경설정 파일에서 민감한 정보를 하드코딩하는것이 아니라 AWS에서 관리하는 방식을 말한다.
- 동작 방법
- 관리자가 Secrets Manger에 비밀을 만들고 그 비밀 안에 여러 Key, value 비밀 값들을 등록한다.
- 비밀 값들은 AWS KMS(Key Management Service)라는 키 관리 서비스를 통해 암호화된다.
- 비밀 값들을 사용하는 서버에서 AWS CLI나 SDK를 이용해 특정 IAM 사용자로 Secrets Manger에 비밀 값을 요청한다.
- IAM에서 요청한 사용자에게 해당 비밀을 조회할 수 있는 권한이 있다고 판단하면 Secrets Manager가 비밀의 값을 복호화해서 응답으로 준다.
- 어플리케이션에서는 받은 비밀 값을 사용한다.
출처
https://intellipaat.com/blog/what-is-aws-elb-load-balancer/?US
https://dev.classmethod.jp/articles/for-beginner-s3-explanation/
https://www.javatpoint.com/aws-cloudfront-cdn
'CS > 서버' 카테고리의 다른 글
Docker로 mysql 설치 및 접속하기 (0) | 2023.05.23 |
---|---|
Dockerfile 이용해서 이미지 만들고, 도커 허브에 배포하기 (0) | 2023.05.23 |
AWS - EC2, Elastic Beanstalk, Fargate, ECR, Lambda, ECS (1) | 2023.05.08 |
도커(docker) - 가상화(VM)과 컨테이너(Container) (0) | 2023.04.05 |
도커(docker) (0) | 2023.04.03 |