인프라를 주로 담당하던 준영이 형이 졸업하면 우리 인프라 관리가 어려워질 것을 대비하여, BCSDLab 백엔드 인원들의 인프라 능력을 함양 시키기 위해 방학동안 위와 같은 커리큘럼으로 인프라 스터디를 하기로 했다.
우선 우리 동아리가 운영하는 서비스 코인의 인프라 구성도는 위와 같다. 현재도 서비스를 운영하면서 거의 매일 같이 사용하고 있지만, 동작 원리에 대해서는 잘 모르는 부분이 많다.
1주차와 2주차에는 AWS 구조를 조사해보자.
주어진 키워드는 다음과 같다:
AWS: VPC, CIDR, EC2, S3, CDN, Route 53, NACL, Security Group
이 단어들이 대부분 생소하니, 하나씩 정리해보도록 하자.
(해당 내용과 사진은 다음의 포스팅을 옮겨 적었다. 누군가 이 글을 본다면 원본 포스팅을 보기를 바란다)
vpn
vpc를 알기에 앞서 우선 vpn을 먼저 알아야 한다.
vpn은 실제 사설망 이 아닌 가상의 사설망으로 만약 위 그림과 같이 회사의 네트워크가 구성되어 있고 보안상의 이유로 직원간 네트워크를 분리하고 싶다면 기존 인터넷선 선공사도 다시해야하고 건물의 내부선을 다 뜯어고쳐야하며 다시 전용선을 깔아주어야 한다. 이를 위해서 가상의 망 vpn을 사용한다.
vpn은 네트워크A와 네트워크B가 실제로 같은 네트워크 상에 있지만 논리적으로 다른 네트워크인처럼 동작한다. 이를 우리는 가상사설망이라고 한다.
vpc
vpc가 없다면 ec2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결된다. 이런 구조가 없다면 시스템의 복잡도를 엄청나게 끌어올리고 하나의 인스턴스만 추가되도 모든 인스턴스를 수정해야 하는 불편함이 생긴다. 마치 인터넷 전용선을 다시 까는 것과 같다.
vpc를 적용하면 vpc별로 네트워크를 구성할 수 있고 각각의 vpc에 따라 다르게 네트워크 설정을 줄 수 있다. 또한 각각의 vpc는 완전히 독립된 네트워크 처럼 동작하게 된다.
더 이상 옮겨적는 것은 의미가 없다고 같으니 자세한 내용은 다시 다음의 글을 참고하자
이번에는 cidr이다. 먼저 다음과 같은 사전 지식과 사설망에 대해 알아야 한다.
IPv4는 총 32비트의 숫자로 구성되어 있다. = 4,294,967,296개
사설망은 공인 IP 주소(Public IP)를 효율적으로 사용하기 위해 고안된 네트워크 구조입니다. 이를 이해하기 위해 몇 가지 핵심 개념을 살펴보자.
공인 IP (Public IP):
인터넷 서비스 제공업체(ISP)로부터 할당받는 IP 주소이다.
인터넷 상에서 고유하며, 전 세계에서 유일하다.
예를 들어, 웹사이트 서버는 공인 IP 주소를 사용하여 인터넷 사용자들이 접근할 수 있다.
사설 IP (Private IP):
특정 네트워크 내에서만 사용되는 IP 주소이다.
사설 IP는 인터넷 상에서 고유하지 않으며, 여러 네트워크에서 동일한 사설 IP 범위를 사용할 수 있다.
사설 IP 주소 범위는 다음과 같다:
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
사설망의 구성
사설망은 내부 네트워크에서 공인 IP 주소를 절약하고 보안을 강화하기 위해 사용된다. 일반적으로 다음과 같은 구성 요소로 이루어진다:
네트워크 기기:
각 기기는 사설 IP 주소를 부여받는다.
예: 컴퓨터, 프린터, 스마트폰 등
게이트웨이 (Gateway):
사설망과 외부 인터넷을 연결하는 장치이다.
일반적으로 라우터가 게이트웨이 역할을 한다.
게이트웨이는 공인 IP 주소를 가지고 있으며, 사설망의 대표로서 외부 인터넷과 통신한다.
사설망의 작동 원리
사설망 내의 기기들이 외부 인터넷과 통신하는 과정을 예를 들어 설명해보자.
1) 기기의 사설 IP 할당:
네트워크에 연결된 각 기기는 라우터로부터 사설 IP 주소를 할당받는다.
2) 기기에서 인터넷 요청:
예를 들어, 컴퓨터(사설 IP: 192.168.1.2)가 인터넷에서 웹사이트를 열려고 한다 하자.
컴퓨터는 HTTP 요청을 게이트웨이(라우터)로 보낸다.
3) 게이트웨이는 컴퓨터로부터 받은 요청을 자신의 공인 IP 주소로 변환하여 외부 인터넷으로 보낸다.
이렇게 변환된 요청을 통해 웹사이트 서버에 접근한다.
4) 응답반환:
웹사이트 서버는 응답을 게이트웨이의 공인 IP 주소로 반환한다.
게이트웨이는 받은 응답을 다시 컴퓨터의 사설 IP 주소로 변환하여 컴퓨터로 보낸다.
이 과정을 통해 사설망 내의 여러 기기가 하나의 공인 IP 주소를 공유하면서 외부 인터넷과 통신할 수 있다.
cidr이란?
이제 다시 CIDR에 대해 살펴보자.
CIDR은 IP 주소의 영역을 여러 네트워크 영역으로 나누기 위해 IP를 묶는 방식으로 여러 개의 사설망을 구축하기 위해 망을 나누는 방법이라고 할 수 있다.
CIDR 표기법
CIDR 표기법은 IP 주소 뒤에 슬래시(/)와 숫자를 붙여서 표기한다. 예를 들어, 192.168.1.0/24와 같이 나타낼 수 있다.
여기서 /24는 네트워크 부분의 비트 수를 나타낸다. 즉, 이 숫자는 서브넷 마스크를 나타내며, 네트워크와 호스트 부분을 구분하는 역할을 한다.
192.168.1.0/24에서 /24는 첫 24비트가 네트워크 주소이고, 나머지 8비트가 호스트 주소이다.
서브넷 마스크는 255.255.255.0으로 표기할 수 있으며, 이는 24비트가 네트워크 부분임을 나타낸다.
네트워크 나누기
CIDR을 사용하면 하나의 네트워크를 더 작은 서브넷으로 나눌 수 있다. 예를 들어, 192.168.1.0/24 네트워크를 더 작은 서브넷으로 나누는 방법을 살펴보자.
예제:
192.168.1.0/24 네트워크는 256개의 IP 주소를 갖는다(0에서 255까지).
이를 두 개의 서브넷으로 나누면, 각각 128개의 IP 주소를 가질 수 있다.
192.168.1.0/25와 192.168.1.128/25로 나눌 수 있다.
192.168.1.0/25: 첫 25비트가 네트워크 주소이고, 나머지 7비트가 호스트 주소입니다. 이는 128개의 IP 주소를 가진다(0에서 127까지).
192.168.1.128/25: 첫 25비트가 네트워크 주소이고, 나머지 7비트가 호스트 주소이다. 이는 128개의 IP 주소를 가진다(128에서 255까지).
첫번째 / 마지막 IP는 예약되어 있어서 사용이 불가능하다
첫번째 IP는 네트워크 자체를 가르키는 IP
마지막 IP는 Broadcast IP
AWS에서는 총 5개의 Address를 예약한다
0: Network Address
1: VPC Router
2: DNS
3: Future Use
4 : Broadcast
ec2(ELASTIC COMPUTE CLOUD)란?
AWS에서 제공하는 클라우드 컴퓨팅 서비스이다.
쉽게 말해서 AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한대 빌리는 것으로 컴퓨터를 빌려서 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 이용 가능하다.
사용한만큼 비용을 지불하고 필요에 따라 성능, 용량을 자유롭게 조절할 수 있어 ELASTIC(탄력적인)이라는 단어가 붙어 있다.
클릭 몇번으로 서버 생성 가능하므로 효율적이고 사용한 만큼만 요금 지불하면 되므로 비용 절감의 효과가 있다.
AWS EC2 인스턴스를 생성한다는 것은 간단히 컴퓨터를 빌리는 것이라고 할 수 있다.
인스턴스 유형에도 타입 이라는 것이 존재한다.
aws는 각 인스턴스의 사용 목적(서버용, 머신러닝용, 게임용)에 따라 타입별로 인스턴스에 이름을 부여해 구분하고 있다.
ex) t타입, m타입, inf타입 ..등
s3란?
AWS가 제공하는 클라우드 스토리지 서비스이다. S3는 파일, 데이터 및 다양한 유형의 미디어 등을 저장하고 관리하는 데 사용하는 웹 기반 스토리지 시스템이다. 저장하는 데이터 양에 대한 비용도 저렴하고, 저장할 수 있는 데이터 양도 무한에 가깝다.
cdn이란?
컨텐츠를 배포하기 위해 최적화 된 네트워크이다.
컨텐츠 서버를 중심으로 여러 곳에 분산 배치한 서버를 통해 효율적으로 컨텐츠를 배포하는 구조로 일종의 컨텐츠를 위한 캐싱이다.
예를 들어 서울에 컨텐츠 서버가 있다고 할 때 미국에서 이 컨텐츠를 이용하기 위해서 엄청나게 많은 거리를 이동해 컨텐츠를 배포해야 한다. 이때 미국에서 컨텐츠 서버를 배치하면 직접 컨텐츠를 제공받을 수 있다. 이러한 구조를 CDN이라 한다.
route53이란?
Route53은 AWS에서 제공하는 DNS 웹 서비스이다. 도메인과 관련된 다양한 서비스를 제공한다.
그렇다면 DNS란 무엇일까? 각각의 컴퓨터는 IP라는 고유의 주소를 가지고 있다. 하지만 IP는 숫자로 되어있기 때문에 사람이 기억하기 힘들다. 네이버라는 웹사이트를 들어갈때 우리가 naver.com이라는 주소를 치고 들어간다.
DNS는 도메인과 도메인에 해당하는 IP 정보를 가지고 있다가 도메인 주소에 대한 요청이 들어왔을 때 이에 해당하는 ip를 알려주는 서버이다. 마치 친구의 이름에 해당하는 번호를 가지고 있는 전화번호 주소록 같은 역할을 한다.
route53에서 레코드는 DNS 서버에서 사용되는 데이터 항목을 말한다. 이러한 레코드는 특정 도메인 이름을 IP 주소 또는 다른 도메인 이름과 매핑하는데 사용된다.
대표적인 레코드 유형으로 NS, SOA, A, CNAME등의 유형이 있다.
A 레코드 (Address Record):
역할: 도메인 이름을 IPv4 주소로 연결한다.
예: example.com이라는 도메인 이름을 192.0.2.1이라는 IP 주소로 연결한다.
용도: 사용자가 웹 브라우저에 example.com을 입력하면, A 레코드를 통해 해당 IP 주소로 접속하게 된다.
CNAME 레코드 (Canonical Name Record):
역할: 도메인 이름을 다른 도메인 이름으로 연결한다.
예: www.example.com을 example.com으로 연결한다.
용도: 사용자가 www.example.com을 입력하면, CNAME 레코드를 통해 example.com으로 이동하고, 그 다음에 example.com의 A 레코드가 작동하여 올바른 IP 주소로 접속하게 한다.
NS 레코드 (Name Server Record):
역할: 도메인의 네임서버를 지정합니다. 이 네임서버가 해당 도메인에 대한 모든 DNS 정보를 관리한다.
예: example.com의 네임서버로 ns1.example.com과 ns2.example.com을 지정한다.
용도: NS 레코드는 어떤 네임서버가 해당 도메인에 대한 정보를 가지고 있는지를 알려준다. 인터넷의 다른 DNS 서버들이 example.com에 대해 물어볼 때, NS 레코드에서 지정된 네임서버를 참조한다.
SOA 레코드 (Start of Authority Record):
역할: 도메인에 대한 권한 정보를 제공하는 레코드입니다. 해당 도메인 존 파일의 시작을 나타내며, 도메인에 대한 주요 정보를 포함한다.
예시: example.com의 SOA 레코드는 관리자 이메일, 도메인 갱신 주기, 네임서버의 기본 정보를 포함한다.
용도: DNS 존 파일의 시작을 나타내고, 다른 DNS 서버들에게 도메인의 관리 정보 및 설정을 제공한다.
nacl과 security group은 vpc의 트래픽을 통제하고 제어하는 서비스이다.
이 서비스들은 일종의 방화벽 설정을 한다고 보면 된다.
nacl이란?
nacl(network access list)는 서브넷 상자 위에 위치하는데 서브넷에 오가는 트래픽을 제어하고
security group이란?
security group은 서브넷 상자 안에 위치 하는데 인스턴스의 트래픽을 제어하는 역할을 한다고 한다.
정리하면 같은 서브넷 끼리 통신할 때: security group 정책을 거치면서 통신
다른 서브넷 끼리 통신: nacl 정책을 먼저 거친 후 security group 정책을 거치면서 통신
1차적 보안은 security group이고 2차 보안까지 하고자 하면 nacl까지 설정해주면 된다.
EC2: https://velog.io/@server30sopt/AWS-EC2-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
route53: https://insight-bgh.tistory.com/261
nacl & security group: https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-VPC-%EA%B0%9C%EB%85%90-%EC%82%AC%EC%9A%A9-%EB%B3%B4%EC%95%88-%EC%84%A4%EC%A0%95-Security-Group-NACL
https://potato-yong.tistory.com/84