[AWS] RDS 그리고 TCP/IP

류예린·2022년 8월 22일
0

1. RDS


RDS(Relational Database Service)는 클라우드에서 간편하게 데이터베이스를 설치, 운영 및 확장할 수 있는 AWS의 대표적인 서비스 중 하나다. RDS는 EC2와 마찬가지로 클라우드 서비스이므로 하드웨어 프로비저닝, 설정, 백업과 같은 시간 소모적인 데이터베이스 관리 태스크를 제거하여 훨씬 효율적으로 운영할 수 있다.






2. RDS 데이터베이스 엔진


RDS는 다음과 같이 다양한 데이터베이스 엔진을 제공한다.

[그림1] 다양한 RDS의 데이터베이스 엔진

이 중에서 가장 특별한 것은 바로 Amazon Aurora 일 것이다. Aurora는 AWS가 만든 완전 관리형 관계형 데이터베이스 엔진이다. MySQL, PostgreSQL과 호환되며 데이터베이스 구성 및 관리의 가장 어려운 측면 중 하나인 데이터베이스 클러스터링 및 복제를 자동화할 수 있다.






3. 왜 EC2에 데이터베이스를 운영하지 않고 RDS를 사용할까?


우선 RDS는 단순히 데이터베이스만을 제공하는 서비스가 아니다. RDS를 이용한다면 패치, 백업, 복원, 장애 탐지, 복구 등 일상적인 데이터베이스 작업을 손쉽게 처리할 수 있으며 프로비저닝(시스템을 가동 가능 상태로 만드는 작업)을 자동으로 처리해주기 때문에 사용자가 직접 해당 작업을 할 필요가 없어진다.

그리고 특정 시간대의 상태를 저장함과 동시에 백업까지 따로 해둘 수 있어 이전 상태로의 복구가 굉장히 용이하다. 대쉬보드를 통해 데이터베이스를 모니터링할 수도 있으며 읽기 전용 복제본을 생성하여 퍼포먼스를 향상시킬 수 있다. 이와 같은 RDS의 여러 장점들로 인해 실제로 많은 회사들이 EC2로 운영하는 것보다 더 많은 비용을 들여서라도 RDS를 사용하게 된다.









4. 네트워크


네트워크란?

[그림2] 네트워크

네트워크(Network)란 여러 디바이스(컴퓨터) 간의 연결망이다. 한 대의 컴퓨터만으로는 네트워크가 될 수 없지만 두 대 이상의 컴퓨터가 연결되어 있으면 네트워크다. 이렇게 연결되어 있는 컴퓨터들은 서로 간에 필요한 데이터를 주고 받을 수 있다.






5. TCP/IP


살아가면서 사람과 사람 사이에 지켜야 하는 여러 규칙이 있듯, 네트워크에서도 통신을 하기 위한 규칙이 있는데 이것을 프로토콜(protocol)이라고 한다. 이러한 프로토콜 중 전세계적으로 가장 많이 쓰이는 것이 TCPIP다. TCP/IP는 하나의 프로토콜이 아닌 패킷 통신 방식의 IP(Internet Protocol)전송 조절 프로토콜인 TCP(Transmission Control Protocol)를 합쳐 부르는 말이다.

✅ IP(Internet Protocol)

컴퓨터들은 복잡한 인터넷 망을 통하여 서로 데이터를 주고 받게 된다. 이렇게 복잡한 인터넷 망을 통과하여 올바른 목적지까지 데이터를 전달하기 위해 필요한 규칙이 바로 IP(Internet Protocol)다.

우편물을 보내려면 주소가 필요하듯 데이터를 목적지로 보내려면 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있는 주소가 필요한데 그 주소가 IP 주소다. IP는 하나의 규칙(프로토콜)으로서 패킷(Packet)이라는 통신 단위에 정보들을 담아 IP 주소로 데이터를 전송한다.

[그림3] Client가 Server에 데이터를 전송

위의 그림과 같이 Client가 “Hello, Wecode!” 라는 데이터를 200.0.0.2 라는 IP 주소를 할당받은 Server에 전송하고자 하는 상황을 살펴보면 출발지 주소(100.0.0.1)와목적지 주소(200.0.0.2)전달하고자 하는 데이터(”Hello, Wecode!”) 등 여러 정보를 담은 패킷을 만들어 전송하여 복잡한 인터넷 망 속 수많은 노드를 거쳐 목적지에 도착하게 된다.

하지만 IP도 다음과 같은 문제점을 가지고 있다.

  • 비연결성(connectionlessness) - 목적지에 해당하는 서버가 꺼져있어도 패킷을 전송한다.
  • 비신뢰성(unreliability) - 말 그대로 신뢰할 수 없다는 의미. 여러 패킷을 전송할 때 패킷이 대상 서버에 순서대로 도착하지 않을 수도 있으며 중간에 노드에 문제가 생겨 패킷이 유실될 경우 아무런 조치를 취할 수 없다.
  • 목적지에 해당하는 서버가 통신하는 어플리케이션이 만약 하나가 아니라면 그것을 구분해낼 수 없다.

이러한 문제를 해결하고자 신뢰성을 보장할 수 있는 프로토콜을 함께 사용하는데 그것이 바로 TCP 다.

✅ TCP(Transmission Control Protocol)

TCP(Transmission Control Protocol)는 IP의 여러 문제를 보완해주는 프로토콜이다. IP가 패킷 단위로 데이터를 구성한다면 TCP는 세그먼트 단위로 데이터를 구성한다.

아래는 TCP가 IP의 여러 한계를 어떻게 보완하는지 설명한다.

  • IP는 목적지에 해당하는 서버가 여러 어플리케이션과 통신하고 있을 경우 그것을 구분할 수 없다. 이를 대비해 TCP는 포트(Port) 정보를 담는다. 또한 같은 이유로 출발지에 해당하는 서버의 포트 정보도 담는다.
  • 목적지에 해당하는 서버가 패킷의 순서를 알 수 있도록 순서 번호 정보를 담는다.
  • 데이터가 올바르게 전달이 되었는지 보증해준다. 데이터를 전송하고 잘 도착했다면 그에 대한 응답을 돌려받는다.
  • 출발지, 목적지 서버가 올바르게 연결이 되는지 확인할 수 있도록 TCP 3-way handshake 방식을 이용한다.

✔️ TCP 3-way handshake

앞서 언급된 TCP 3-way Handshake의 동작 방식은 아래와 같다.

[그림4] TCP 3-way handshake

  1. SYN(Synchronization)
    • 클라이언트는 서버와의 연결을 위해 서버에 접속을 요청하는 SYN 패킷을 보낸다.
  2. SYN(Synchronization) + ACK(Acknowledgement)
    • 서버가 SYN 패킷을 받게 되면 클라이언트에게 올바르게 받았다는 신호인 ACK와 SYN 패킷을 같이 보낸다.
  3. ACK(Acknowledgement)
    • 마지막으로 클라이언트가 서버에게 ACK 패킷을 보내 서버가 받게 되면 데이터를 주고 받을 수 있는 상태가 된다.

✅ TCP/IP Model

[그림5] TCP/IP Model

TCP/IP(Transmission Control Protocol/Internet Protocol) 모델은 컴퓨터가 서로 데이터를 주고 받을 때에 그 네트워크 통신 과정을 크게 4개의 계층(Layer)로 나누어 놓은 모델이다. 흔히 TCP/IP 4계층 이라고도 부른다.

컴퓨터간 통신을 할 때에는 최상위 계층인 응용 계층(Application Layer)부터 최하위 계층인 네트워크 인터페이스 계층(Network Interface Layer) 순으로 각 계층을 한 번씩 거치게 된다. 각 계층의 역할과 특징은 다음과 같다.

  • Layer 4 - 응용 계층(Application Layer)
    • 사용자와 가장 가까운 계층으로 어플리케이션이 어떤 데이터를 전송할지 결정.
    • 예시 HTTP, FTP, SSH ...
  • Layer 3 - 전송 계층(Transport Layer)
    • 통신 노드 간의 연결을 제어하고 신뢰성있는 데이터 전송을 담당. 세그먼트(Segment) 단위로 데이터를 구성.
    • 예시 TCP, UDP, PORT ...
  • Layer 2 - 인터넷 계층(Internet Layer)
    • 최종 목적지까지 정확하게 데이터가 전송될 수 있도록 라우팅 기능을 담당. 패킷(Packet) 단위로 데이터를 구성.
    • 예시 IP ...
  • Layer 1 - 네트워크 인터페이스 계층(Network Access Layer/ Network Interface Layer)
    • OS의 네트워크 카드와 디바이스 드라이버 등 하드웨어 요소와 관련된 모든 것을 지원하는 계층. 네트워크용 하드웨어 기기 간에 데이터 전송을 제어함으로 상위 계층은 하드웨어의 종류에 상관없이 통신할 수 있다.





6. 공인 IP & 사설 IP


✅ 공인 IP

공인 IP(Public IP)는 전세계에서 유일하게 식별될 수 있는 IP를 의미하며, 인터넷 서비스 공급자(ISP)를 통해 할당받는다. 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 컴퓨터가 해당 공인 IP를 통해 접근할 수 있다. 따라서 공인 IP를 사용하는 경우 보안을 더욱 신경써야 한다.

예시 도로명 주소와 같이 유일하게 식별할 수 있는 값 → 서울특별시 강남구 테헤란로 427

✔️ 공인 IP 확인하는 방법

[그림6] 터미널에 공인 IP 출력

$ curl ifconfig.me

위와 같은 명령어를 입력하여 공인 IP를 출력할 수 있다.

✅ 사설 IP

사설 IP(Private IP)는 네트워크 내부에서만 식별될 수 있는 IP를 의미하며 라우터(공유기)에 의해 할당받는다. 이름에서 보듯이 인터넷상에서는 확인이 불가능하며 내부 네트워크에서만 사용 가능하다. 일반 가정이나 회사에서 라우터(공유기) 등의 장비가 하나의 공인 IP를 할당받고 나누어 쓰는 방식으로 주로 사용된다.

예시 층, 호수와 같이 여러 곳에서 중복될 수 있는 값 → 13층 1302호

✔️ 사설 IP 확인하는 방법

[그림7] 터미널에 사설 IP 출력 - MacOS

MacOS의 경우 다음과 같은 명령어를 입력하여 [그림7]과 같이 사설 IP를 출력할 수 있습니다.

$ ipconfig getifaddr en0

[그림8] 터미널에 사설 IP 출력 - Ubuntu

[그림9] 터미널에 사설 IP 출력 - Linux

Linux(Ubuntu)의 경우 다음과 같은 명령어를 입력하여 [그림8] 혹은 [그림9]과 같이 사설 IP를 출력할 수 있습니다.

$ hostname -i





7. Summary


  • RDS(Relational Database Service)는 클라우드에서 간편하게 데이터베이스를 설치, 운영 및 확장할 수 있는 서비스다.
  • RDS는 Amazon Aurora, MySQL, PostgreSQL, Oracle 등 다양한 데이터베이스 엔진을 제공한다.
  • EC2에 데이터베이스를 운영하지 않고 RDS를 사용하는 이유는 RDS를 이용하여 일상적인 데이터베이스 작업을 손쉽게 처리하고 프로비저닝을 자동으로 처리함으로써 보다 효율적인 운영이 가능하기 때문이다.
  • 네트워크란 여러 디바이스(컴퓨터)간의 연결망이다.
  • 네트워크 통신을 할 때에도 규칙이 있는데 그것을 프로토콜이라고 하며 가장 많이 쓰이는 것은 TCP/IP 다.
  • IP는 복잡한 인터넷 망을 통해서 통신을 하더라도 전송할 데이터가 올바르게 목적지에 도착할 수 있도록 해준다.
  • TCP는 IP와 함께 사용되며 IP의 여러 한계점들을 보완한다.
  • 공인 IP는 전세계에서 유일한 IP 주소이며, 사설 IP는 네트워크 내부에서만 사용된다.
profile
helloworld

0개의 댓글