전체 글
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 모놀리식 아키텍쳐 vs 마이크로서비스 아키텍쳐
모놀리식 아키텍쳐 모놀리식 아키텍쳐는 하나의 통에다가 많은 기능들을 다 구현한다는 개념입니다. 이에 반대되는 개념은 마이크로 서비스 아케틱쳐가 됩니다. 모놀리식 아키텍쳐의 장점은 End-to-End 테스트가 용이합니다. 이는 사용자가 회원가입 하는 순간부터 끝나는 순간까지의 테스팅 과정이 용이하다는 뜻이 됩니다. 그리고 간단한 서비스를 만들 때 매우 좋다는 것입니다. 하지만 유지보수가 힘들다는 단점이 있고, 덩치가 커지며, 일부분의 오류가 전체에 영향을 미치게 되는 것입니다. 마이크로서비스 아키텍쳐 반면에 마이크로서비스 아키텍쳐는 각 기능에 따라 분리해 놓은 것을 말하게 됩니다. 이의 단점은 모니터링이 힘들다는 점입니다. 각 기능들 과읭 상호작용이 엄청 많을 것이고 이에 따른 함수도 많을 것인데, 이를 ..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - VPC EndPoint 만들기
VPC EndPoint를 구축하기 전에 이태까지 만들었던 구조를 다시 살펴보겠습니다. private-subnet이 aws S3를 바라보고 싶다고 해 봅시다. 근데 여기에 접근하려면 당연히 인터넷에 접근할 수 있어야 합니다. 이럴 려면 route table이 private-subnet을 igw로 가게끔 해야 합니다. 하지만 이렇게 해 버리면 private-subnet의 의미가 사라지게 됩니다. 따라서 Gateway Endpoint를 통해서 접근할 수 있게끔 해야 합니다. 근데 의문점이 생길 수도 있습니다. 이전에 구축했던 NAT Gateway를 통해서 외부와 소통할 수 있었는데, 이를 통해서 S3에 접근할 수 있는게 아닌가? 이를 통해서 당연히 S3로 접근할 수 있습니다. 하지만 되도록이면 이러한 방법을 ..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - NAT Gateway 만들기
여기에서는 NAT Gateway를 통해 Private EC2에 mysql을 설치해 보도록 하겠습니다. 만약 private-subnet에서 yum install mysql을 치게 되면 당연히 되지 않게 됩니다. 그 이유는 외부의 인터넷과 인터렉션이 되지 않기 때문입니다. 하지만 우리는 NAT Gateway와 route-table을 수정하게 되면 작동하게 됩니다. 우리는 저번시간에 Bastion Host를 통해서 private-subnet에 접속했습니다. 이 상태에서 sudo yum install mysql을 하게 되면 당연히 안됩니다. 이제 이를 되게 해 보겠습니다. 먼저 NAT Gateway를 구동해 보도록 하겠습니다. 이를 위해서는 nat gateway를 생성합니다. 우선 이는 당연히 public-su..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Bastion Host 만들기
저희는 일단 private-subnet에 접근할 수 있는, private EC2를 만들겁니다. 그리고 Bastion Host인 Public EC2를 만들겁니다. 그리고 이 Bastion Host를 통해 Private EC2로 접근할겁니다. 먼저 public-ec2를 생성해 보도록 하겠습니다. 새로운 보안 그룹 public_sg를 생성하고 다음과 같이 설정해 주고 인스턴스를 만듭니다. 이는 결과적으로 Bastion Host가 되는 것입니다. 그 다음으로는 private-ec2를 생성해 보도록 하겠습니다. 이를 위해서는 보안그룹을 조금 다르게 설정해 주어야 합니다. 새로운 보안 그룹을 생성하고 인바운드 규칙에서 소스를 전체로 하면 안됩니다. 그 이유는 아무대서나 허용을 해버리면 이건 private-subne..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - NACL 설정하기 2
이번에는 public-subnet안에서 EC2 하나를 구동해 보도록 하겠습니다. 따라서 이 EC2의 경우에는 public-subnet안에 있으므로 public-nacl의 인바운드, 아웃바운드 규칙을 따를 것입니다. 우선 AWS EC2인스턴스 하나를 생성해 보도록 하겠습니다. 우선 VPC로는 저희가 앞에서 만든 VPC를 선택해주고 서브넷은 public-subnet을 선택해 주도록 하겠습니다. 그리고 퍼블릭 IP 자동 할당을 활성화를 시켜주기 위해 아래와 같은 설정을 public-subnet에서 해주도록 하겠습니다. 이는 EC2인스턴스에 접근하기 위해 공인 IP를 할당하기 위한 필수 설정이기 때문에 무조건 체크해 주셔야 합니다. 그리고 사용자 데이터에 아래와 같은 shell script코드를 작성해 주도록 ..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - NACL설정하기
NACL 설정 보통 클라이언트가 80번 포트로 request를 보내게 되면, 서버는 1025포트와 같이 다른 포트로 쏴줍니다. 다음과 가팅 들어오는 위치를 inbound라고 하고, 나가는 것을 outbound라고 합니다. outbound의 임시포트의 범위는 (1024 ~ 65535)입니다. Security Group은 Stateful합니다. 이는 요청한 상태를 기억한다는 의미입니다. inbound가 80이고 outbound가 none이라는 뜻은 안으로 80번 포트로는 들어올 순 없지만 밖으로 나가는건 다 막아버리겠다라는 것입니다. 하지만 Security Group은 Stateful하기 때문에 상태를 기억해서 밖으로 1025번 포트로 다시 쏴줄 수 있다는 것입니다. 다음은 stateless한 NACL입니다..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - IGW와 라우팅 테이블 생성
IGW 생성 igw를 fastcampus-lgw라는 이름으로 만들어 줍시다. 만들고 나면 어떠한 VPC에도 장착되지 않았으므로, 상태가 Detached가 됩니다. 다음과정을 거치면 아래와 같은 그림이 됩니다. 사실상 route table과 IGW를 연결해 주지 않았기 때문에 위와 같은 그림이 됩니다. 기본적으로 생성된 route table을 보시면 아래와 같습니다. 즉 10.0.0.0/16에 해당하는 것이 들어오면 local로 돌리라는 의미의 행밖에 없습니다. 또한 서브넷 연결에 들어가서 보면 다음과 같이, 명시적으로 연결되어 있지 않은 저희가 이전에 만든 public-subnet과 private-subnet이 존재하게 됩니다. 그리고 이들은 기본 route table에 연결되어 있는 상태가 되겠습니다...
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - VPC와 Private, Public Subnet 만들기
AWS VPC 만들기 ( VPC ) 우선 AWS에 로그인하고 VPC대시보드로 간단음에 default vpc외에 custom vpc를 fastcampus-customvpc라는 이름으로 하나 만들었습니다. CIDR 블록 주소는 10.0.0.0/16 IPV4로 지정해 주었습니다. VPC를 만들고 나면 서브넷은 기본적으로 만들어 주지 않습니다. 그래서 새 서브넷을 만들어 주도록 하겠습니다. 서브넷 안에서도 IPv4 CIDR블록을 지정해 주어야 합니다. 여기서는 10.0.0.0/24로 지정해 주었습니다. 그리고 서브넷 이름은 public-subnet으로 만들어 주었고, 하나의 subnet은 하나의 AZ에만 포함되어야 한다는 것을 앞에서 배웠습니다. 그래서 AZ도 ap-northeast-2a로 지정해 주었습니다. ..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 네트워킹의 동작원리 - 3
NAT(Network Address Translation) Instance/gateway private subnet은 회원 DB와 같이 보안상으로 외부에 노출되서는 안되는 것이 들어갑니다. 만약 상황을 가정해 봅시다. private subnet에서 MySQL을 사용하려면 외부로부터 MySQL을 설치를 해 주어야 합니다. 또한 MySQL의 버전업같은 것을 위해서는 private subnet과 인터넷과의 연결은 필수가 됩니다. 이러한 경우 private subnet에서 public subnet으로 접속해서 우회하는 방식을 사용합니다. 이러한 우회 절차를 NAT을 통해서 진행하게 되는 것입니다. public subnet에 있는 객체를 통해서 외부와의 접근을 우회하는 방법에 크게 2가지가 있는 것입니다. nat..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 네트워킹의 동작원리 - 2
Internet gateway(IGW) 실질적으로 내부에 있는 구성요소들이 외부의 요소와 소통하기 위해서는 IGW가 필요하게 됩니다. 또한 애초에 private subnet은 외부 인터넷과 연결이 되어 있지 않으므로 IGW와 연결되어 있지 않습니다. route table route table은 트래픽이 어디로 가야 할지 알려주는 테이블입니다. 이러한 route table이 있다고 해 봅시다. 이는 VPC생성 시 자동으로 만들어 주는 테이블 입니다. 이는 10.0.0.0/16으로 오는 트래픽은 모두 Local로 가고, 그 외의 트래픽은 IGW로 즉 외부로 가라는 뜻입니다. 만약 우리가 10.0.0.3으로 보내고 싶다고 해 봅시다. 그럼 이는 route table로 가게 됩니다. 위의 route table의..