Infra 구축 - CQRS 도입기

윤태호·2023년 4월 29일
1

Infra Setting!!

저번글에서 이론적으로 Kafka에 대한 정리를 마치고, 드디어 CQRS를 위한 Infra Setting을 시작으로 Pipeline을 구축하고자 합니다.
필자가 활용한 것은 아래와 같습니다.

  • AWS EC2
  • VPC
  • Subnet
  • Router
  • AWS Elastic Search
  • MSK(Kafka Cluster)
  • Docker

VPC??

Infra 구축과정을 보여드리면서 각각에 해당하는 용어에 대한 설명을 짧게 하면서 진행하겠습니다.

VPC를 알기전에 VPN에 대해 알아보고 넘어갑시다.

  • VPN이란?
    Virtual Private Network를 의역하면 단어의 뜻 그대로 가상 프라이빗한 네트워크입니다. 네트워크는 각 네트워크사에서 제공하는 통신선을 통해 구성됩니다. 하지만 그 네트워크 상에서도 우리는 보안상이든 Service든 네트워크를 분리하고 싶습니다. 바로 이때 VPN의 개념을 쓰는데요. 이렇게 VPN을 다르게 설정하면 논리적으로 다른 네트워크처럼 동작하게 됩니다.
  • VPC란?
    VPN과 같은 개념인데요 AWS에서 제공하는 Virtual Private Cloud 입니다. VPN과 같이 Network 대역을 설정하며 논리적으로 구분합니다. 만약 VPC가 없었다면 아래와 같이 EC2를 관리하기에 매우 어려웠을 것입니다.

    그래서 VPC를 통해 구분하여 관리합니다. 아래의 그림과 같이!!

이 정도로 간단하게 설명을 마치고 AWS에서 VPC를 설정하는 과정을 그림과 같이 보겠습니다.

VPC는 간단하게 설정할 수 있는데요. 이름을 설정하시고 필자는 직접 IP 주소를 할당하였습니다. IP 포트에 대한 Network 지식은 추후에 다루도록 하겠습니다.

Subnet?

VPC로 Network의 구역을 설정했지만, VPC보다 더 잘게 나누며, 효율적으로 네트워크를 쓰고 싶습니다. 그렇다면 우리는 더 작게 Network 구역을 나눌 필요가 있으며 이 과정을 Subnetting이라 부르며 그렇게 나눠진 구역을 Subnet이라고 부릅니다.
AWS에서는 아래의 그림과 같이 설정할 수 있습니다.

그림에서 보면 필자는 Subnet을 두 가지로 나눠 가져갔습니다.
참고로 MSK와 ElasticSearch는 최소 2개의 Subnet 가용영역을 요구하므로 만드실때 유의 하시길 바랍니다!!
위의 그림은 실제로 쓰는게 아니니 유의 하시고 보시길 바랍니다.

Internet Gateway??

Subnet까지 우리는 EC2를 띄울 네트워크 대역대를 설정했습니다. 그렇다면 우리는 외부의 Internet의 Access를 허용하고 받아줄 도구가 필요합니다. 그것이 바로 Internet Gateway입니다. Internet Gateway는 수평적 확장성과 높은 가용성을 지닌 구성요소로 네트워크 대역폭에 제약이 없습니다.
AWS에서는 아래의 그림과 같이 설정할 수 있습니다.

정말 간단히 이름을 설정하고 생성하면 됩니다. 하지만 여기서 끝이 아닙니다. 그 후에 어떤 VPC에서 Hosting할지 정해야하기에 VPC를 정해줘야합니다. 아래와 같습니다.

Routing Table?

위의 과정을 거치며 우리는 인터넷의 Access를 허용했습니다. 그러면 "과연 들어오는 트래픽을 어떻게 분배할 것인가??"라는 의문이 생깁니다.
위의 역할을 담당하는 것이 바로 Routing Table 입니다.
라우팅 테이블(routing table)은 서브넷 혹은 게이트웨이를 통해서 네트워크 트래픽이 어디로 향하는지에 대해 결정할 때 사용되는 routes라는 몇가지 룰을 포함한다.
AWS에서는 아래의 그림과 같이 설정할 수 있습니다.

사용할 VPC를 선택하고 이름을 설정해주면 생성은 완료됩니다.
하지만 생성 후에 어떤 서브넷과 연결 시켜줘야할지 정해야합니다. 아래의 그림처럼 라우팅테이블을 클릭하여 들어가면 서브넷을 정할 수 있는 대시보드가 나옵니다!!!

EC2?

EC2를 간단하게 설명하자면 AWS에게 가상의 서버 컴퓨터를 빌리는 것으로 생각할 수 있습니다. AWS의 데이터 센터에 존재하는 서버를 빌리는 것이다.
EC2를 생성할 때 보시면 그렇기에 우리는 OS도 선택할 수 있으며,CPU,Memory 등 다양한 선택을 할 수 있습니다.
대신 그만큼의 돈을 지불해야한다는 점을 잊지마시길 바랍니다.
EC2 설정은 아래의 그림과 같습니다.

첫 번째로 이름을 설정하고 CPU와 OS를 고를 수 있습니다.

그 후에는 인스턴스 유형과 키페어를 설정합니다. 인스턴스 유형은 다양한데 micro까지는 AWS에서 무료로 제공해줍니다. 키페어는 서버에 연결을 위한 Private Key라고 보시면 되기에 하나 만들어 저장해주시고 잘 간직하고 계시길 바라겠습니다.

보안 그룹 규칙

EC2라는 가상 서버까지 구축했다면, 마지막으로 우리는 EC2이 보안 수준을 설정해야합니다. 간단히 생각하시면 보안 그룹 규칙은 방화벽을 설정한다고 생각하시면 편합니다. 내가 만든 가상의 서버에 어떠한 요청들을 허용할 것이고 거부할 것인지 설정하는 규칙입니다!!
보안 그룹 규칙 설정은 아래의 그림과 같습니다.

위의 보이는 사진처럼 EC2의 네트워크 설정에서 보안그룹을 설정할 수 있는데, 외부의 모든 트래픽을 열고 싶다면, HTTP, HTTPS, TCP에서 위치 무관으로 설정하면 가능합니다!!! 위의 프로토콜에 대한 이해가 부족하다면 살짝 공부하고 오시길 추천드립니다!

글을 마치며

간단한 네트워크 지식과 함께 AWS에서 Infra 구축을 설명하는 글이였습니다.
간단해보이지만, 제대로 설정하지 않는다면 아마 요청과 응답을 보내고 받는 것이 불가능할 것입니다!!!
다음 글은 MSK를 구축하는 과정을 보여드리도록 하겠습니다 ㅎㅎ
참고로 CQRS 도입기라는 프로젝트(공부)는 김정훈님과 함께 진행하고 있습니다.

profile
성장하는것을 제일 즐깁니다.

0개의 댓글