Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
이전 글에서는 EC2에 동작하는 프로세스를 대상으로 CI/CD를 구현하였다. https://everenew.tistory.com/419 AWS CodePipeline 구성하기 (commit, build, deploy) CodeCommit, CodeBuild, CodeDeploy를 세팅하고 전체를 하나의 플로우로 구성해 주는 CI/CD 서비스인 CodePipeline을 구성해 보자. 이번 실습에서 업데이트의 대상이 되는 것은 Private subnet에서 autoScaling 되는 Web everenew.tistory.com 컨테이너 실행을 위해 ECS를 사용한다면, code deploy가 없어도 ECS 자체가 code pipeline의 배포 요소로 사용 가능하다. 컨테이너 환경으로의 배포를 간단하게 구성..
CodeCommit, CodeBuild, CodeDeploy를 세팅하고 전체를 하나의 플로우로 구성해 주는 CI/CD 서비스인 CodePipeline을 구성해 보자. 이번 실습에서 업데이트의 대상이 되는 것은 Private subnet에서 autoScaling 되는 Web server에서 동작하는 프로세스이다. Web Server 생성 AutoScaling group에 속하는 Web Server를 생성해 주자. web server ec2를 위한 역할을 생성한다. 두 가지 권한을 추가하여 생성하자. SSM으로 연결하고, S3에서 빌드 데이터를 받아오기 위한 권한이다. 이제 EC2 시작 템플릿을 생성하자. t2.micro는 특정 AZ에만 존재할 수 있으므로 t3.micro를 선택한다. 세팅한 보안 그룹은 2..
CloudFront는 CDN 서비스로 많이 사용되지만, 클라이언트를 인접 Edge location에 접속하게 해서 빠르게 리전의 서비스에 접속하는 기능도 수행할 수 있다. 이를 확인해 보기 위해서 CloudFront로 웹페이지를 동적으로 서비스해 보자. CloudFront 배포 생성 phpBB 웹서비스를 제공하는 EC2 인스턴스를 origin으로 등록한다. 이 phpBB는 사용자에 따른 동적인 페이지를 제공하는 커뮤니티 기능을 제공하고 있다. 이 서비스를 제대로 사용하기 위해서는 동적 콘텐츠를 제공해야만 한다. 캐싱의 TTL이 0이면 캐싱이 되지 않고 항상 새로운 데이터를 가져오게 된다. 즉, 항상 원본에 접근하므로 동적 콘텐츠를 제공할 수 있게 된다. 방화벽은 다음과 같이 설정해 주자. 생성완료. Cl..
AWS Database Migration Service (DMS) DMS는 온프레미스의 DB를 AWS의 DB 서비스로 마이그레이션 해주는 서비스이다. 이를 위해서 마이그레이션을 담당하는 인스턴스를 생성하여, 온프레미스의 DB에 접근해서 데이터를 전송하게 된다. 서로 다른 DB 사이에는 스키마가 호환되지 않을 수도 있기 때문에, 이를 고려한 스키마 변경까지 제공해 준다. 우리는 윈도우 OS의 EC2를 온프레미스의 DB로 가정해서, 온프레미스의 Mysql DB를 AWS의 Aurora DB로 마이그레이션 해보자. Window에서 MySQL DB 설정 이를 위해서 Window Ec2로 접근하였다. 윈도우에 mysql 설치한다. Master user도 생성해 주자. 이제 생성된 local instance를 누르면..
이전 글에서는 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..