Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
이전 글에서는 VPC 간의 Peering을 해보았다. AWS 다른 리전 간의 VPC Peering 설정하기 AWS 다른 리전 간의 VPC Peering 설정하기 VPC Peering 격리된 VPC는 별도의 세팅이 없다면, 다른 VPC와 연결을 할 수 없다. 그렇다고 인터넷을 통해 다른 VPC로 접근을 한다면, 추가적인 암호화가 필요할 것이다. 따라서 AWS는 VPC간을 AWS 내부 네 everenew.tistory.com VPC 피어링은 적은 개수의 VPC 간에는 세팅이 수월하다. 하지만 전이적 피어링을 지원하지 않기 때문에, VPC가 수십, 수백 개로 늘어나면 관리가 불가능할 정도로 피어링이 늘어난다. 따라서 Transit Gateway를 통해 중앙 집중형으로 피어링을 관리할 수 있다. 모두 동일한 라..
클라우드 스토리지 도입의 단점 AWS의 S3와 같은 클라우드 스토리지를 사용한다면, 결국 애플리케이션의 코드를 S3 API를 사용하도록 모두 변경해야 한다. 이후에 다른 스토리지 서비스로 변경한다면 또다시 코드의 변경이 필요하다. 이런 단점을 해결하기 위해 기존 Linux의 마운트 기능을 그대로 사용할 수 있는 서비스인 DataSync와 Storage Gateway 사용해 보자. 온프레미스의 NFS 온프레미스의 서버가 없으므로 AWS의 VPC를 하나의 온프레미스 망으로 가정하고 진행해 보자. 현재는 Client server가 NFS Storage server를 사용하고 있다. 이러한 NFS 서버를 직접 관리한다면, 가용성과 백업을 위한 추가적인 비용이 많이 발생하므로 이를 클라우드 스토리지로 전환해 보자..
Session Manager AWS에서는 더 이상 key를 활용한 ssh 접근보다는 session manager를 통한 접근이 권장된다. 특히 Session Manager 접근을 통해 작업한 내용이 모두 기록에 남기 때문에 관리에도 효과적이다. Session Manager 사용 조건 1. 인스턴스는 시스템 메니저 에이전트 설치가 필요 2. 시스템 매니저를 사용할 수 있는 역할이 필요 3, 시스템 메니저와 인터넷 연결성 위의 두가지 조건이 맞더라도 Private subnet의 존재하는 EC2 인스턴스는 VPC 외부로 접근할 수 없다. 하지만 private subnet을 인터넷과 연결시킬 수는 없는 노릇이다. 이럴 때 사용하는 것이 AWS의 리전에 존재하는 서비스로 접근할 수 있게 해주는 VPC 엔드 포인트..
Private subnet에서 외부로의 트래픽이 나가려면, NAT Gateway와 같은 서비스가 public subnet에 존재해야 한다. 하지만 Nat Gateway는 프리티어에서 사용할 수 없으므로, NAT 역할을 해주는 EC2 Instance로 그 역할을 대체해 보자. 대신 aws가 관리해 주는 것이 아니기 때문에, 직접 관리를 해야 하지만 우리는 Instance 비용만 지불하면 된다. 이러한 NAT Instance를 만들기 위해서 iptables를 직접 세팅할 수 있지만, 다른 유저가 만든 AMI를 사용해서 만들어 보자. 보안그룹 생성 외부로 전달할 트래픽들만, 응답이 들어올 수 있도록 인바운드 규칙을 만들어 주어야 한다. privaet의 instance의 보안그룹으로부터의 트래픽을 허용한다. N..
배스천 호스트(Bastion Host) Bastion은 중세시대 성벽에서 방어를 위해 밖으로 도출된 부분을 의미한다. 배스천 호스트는 외부에서 내부 네트워크에 접근할 수 있는 유일한 접근점이다. 보안성이 높은 인프라와 외부 인터넷을 연결하는 중계 서버로 작동하며, 모든 인바운드 트래픽은 배스천 호스트를 통과해야 내부 네트워크로 들어갈 수 있다. 따라서 인증, 인가의 기능을 수행한다고 볼 수 있다. 일반적으로 배스천 호스트는 공인 IP 주소로 프로비저닝 되고 SSH를 통해 액세스 될 수 있는 인스턴스이다. 따라서 AWS에서의 자원들은 private subnet에 위치하고, 유일한 접근점인 bastion host만이 public subnet에서 트래픽을 받는다. private subnet의 인스턴스는 이미 ..
CloudFront AWS의 CDN 서비스인 CloudFront는 리전으로부터 거리가 먼 사용자들에게 빠른 데이터 전송을 위해 각지에 준비된 Edge Location에 위치한 서비스이다. Edge Location은 600개 이상으로 33개인 리전에 비해 조밀하게 분포되어 있다. 이러한 EdgeLocation의 CloudFront로의 접속은, 사용자의 위치에 따라 가장 빠른 EdgeLocation으로 연결된다. EdgeLocation은 AWS의 리전에 전용 망으로 연결되어 있기 때문에, 공용망에 비해 빠른고 안정적인 네트워크를 제공할 수 있다. 만약 사용자가 요청한 데이터가 Edge Location에 없다면, cache miss가 발생하게 된다. cache miss가 발생되면 리전으로부터 원본 데이터를 E..
VPC Peering 격리된 VPC는 별도의 세팅이 없다면, 다른 VPC와 연결을 할 수 없다. 그렇다고 인터넷을 통해 다른 VPC로 접근을 한다면, 추가적인 암호화가 필요할 것이다. 따라서 AWS는 VPC간을 AWS 내부 네트워크로 안전하게 연결하는 피러일 기능을 제공한다. 이를 통해서 사설 IP만으로 통신이 가능하므로, 공인 IP에 대한 비용도 절약된다. VPC가 어떤 리전에 있던, 다른 계정이던 서로 간의 승인만 있다면 연결이 된다. 하지만, IP 대역은 달라야 한다. 그래서 랜덤 한 IP은 할당은 지양해야 하고, 할당 규칙을 지정해야 한다. 주의해야 할 점은 피어링 한 VPC 간에서만 통신이 되고, 다른 VPC로의 경유를 할 수는 없다. (전이적 피어링을 지원하지 않는다.) 이제부터 같은 리전의 ..
Cloud Formation 리전에 장애가 발생한다면, 서비스를 GUI 콘솔로 하나하나 다시 생성하는 것은 상당히 긴 시간이 걸린다. 따라서 인프라 세팅을 IaC와 같은 템플릿 코드화 해서, 장애 발생 시 해당 코드를 그대로 실행할 수 있도록 세팅하도록 해야 한다. 보통 Terraform과 같은 서드 파티를 사용하지만, AWS에서 지원하는 Cloud Formation을 사용할 수도 있다. 이러한 IaC의 장점은 다음과 같다. 1. 형상 관리가 편리하다. 형상 관리로 이전 버전을 저장하고 수정한다. 변경 코드를 실행하면, 변경된 내용들만 그대로 적용된다. 2. 테스트 환경 세팅 테스트 환경을 프로덕션 환경과 똑같이 세팅하고, 테스팅 후 지우기에 편리하다. 3. 장애 대응에서 빛을 발한다. 위에서 언급한 것..
NAT 게이트웨이의 생성에 대해서는 이전 글을 생성해 주자. https://everenew.tistory.com/394 AWS NAT Gateway를 Private Subnet과 연결하기 VPC와 Public subnet, IGW의 세팅은 완료되었다고 가정하고 진행하겠다. 이에 대한 내용을 아래 게시글을 참조하자. https://everenew.tistory.com/390 AWS VPC와 Public & Private Subnet의 차이점 VPC( Virtual Private Cloud ) everenew.tistory.com NAT 게이트웨이는 용량과 가용성을 AWS가 보장해 준다 하지만 특정 서브넷 안에 속하기 때문에 AZ에 종속적이다. 따라서 NAT 게이트웨이가 단 한 개만 존재한다면, 특정 AZ ..
VPC와 Public subnet, IGW의 세팅은 완료되었다고 가정하고 진행하겠다. 이에 대한 내용을 아래 게시글을 참조하자. https://everenew.tistory.com/390 AWS VPC와 Public & Private Subnet의 차이점 VPC( Virtual Private Cloud ) AWS의 VPC는 논리적으로 격리된 네트워크 서비스이다. VPC는 온프레미스에서 사용하는 사설 네트워크와 비슷한 용도로 사용한다. 따라서 VPC 또한 사설 IP를 사용해서 생성하 everenew.tistory.com NAT 게이트웨이 생성 VPC의 Nat 게이트웨이로 들어가서 생성해 주자. NAT 게이트웨이는 외부로 나갈 수 있도록, 퍼블릭 IP가 존재하므로 public subnet에 만들어 준다. 탄..