RDS(Relational Database Service)는 클라우드에서 간편하게 데이터베이스를 설치, 운영 및 확장할 수 있는 AWS의 대표적인 서비스 중 하나다. RDS는 EC2와 마찬가지로 클라우드 서비스이므로 하드웨어 프로비저닝, 설정, 백업과 같은 시간 소모적인 데이터베이스 관리 태스크를 제거하여 훨씬 효율적으로 운영할 수 있다.
RDS는 다음과 같이 다양한 데이터베이스 엔진을 제공한다.
[그림1] 다양한 RDS의 데이터베이스 엔진
이 중에서 가장 특별한 것은 바로 Amazon Aurora
일 것이다. Aurora는 AWS가 만든 완전 관리형 관계형 데이터베이스 엔진이다. MySQL, PostgreSQL과 호환되며 데이터베이스 구성 및 관리의 가장 어려운 측면 중 하나인 데이터베이스 클러스터링 및 복제를 자동화
할 수 있다.
우선 RDS는 단순히 데이터베이스만을 제공하는 서비스가 아니다. RDS를 이용한다면 패치, 백업, 복원, 장애 탐지, 복구 등 일상적인 데이터베이스 작업을 손쉽게 처리할 수 있으며 프로비저닝(시스템을 가동 가능 상태로 만드는 작업)을 자동으로 처리해주기 때문에 사용자가 직접 해당 작업을 할 필요가 없어진다.
그리고 특정 시간대의 상태를 저장함과 동시에 백업까지 따로 해둘 수 있어 이전 상태로의 복구가 굉장히 용이하다. 대쉬보드를 통해 데이터베이스를 모니터링할 수도 있으며 읽기 전용 복제본을 생성하여 퍼포먼스를 향상시킬 수 있다. 이와 같은 RDS의 여러 장점들로 인해 실제로 많은 회사들이 EC2로 운영하는 것보다 더 많은 비용을 들여서라도 RDS를 사용하게 된다.
[그림2] 네트워크
네트워크(Network)
란 여러 디바이스(컴퓨터) 간의 연결망이다. 한 대의 컴퓨터만으로는 네트워크가 될 수 없지만 두 대 이상의 컴퓨터가 연결되어 있으면 네트워크다. 이렇게 연결되어 있는 컴퓨터들은 서로 간에 필요한 데이터를 주고 받을 수 있다.
살아가면서 사람과 사람 사이에 지켜야 하는 여러 규칙이 있듯, 네트워크에서도 통신을 하기 위한 규칙이 있는데 이것을 프로토콜(protocol)
이라고 한다. 이러한 프로토콜 중 전세계적으로 가장 많이 쓰이는 것이 TCP
와 IP
다. TCP/IP
는 하나의 프로토콜이 아닌 패킷 통신 방식의 IP(Internet Protocol)와 전송 조절 프로토콜인 TCP(Transmission Control 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)
는 IP의 여러 문제를 보완해주는 프로토콜이다. IP가 패킷 단위로 데이터를 구성한다면 TCP는 세그먼트 단위로 데이터를 구성한다.
아래는 TCP가 IP의 여러 한계를 어떻게 보완하는지 설명한다.
TCP 3-way handshake
방식을 이용한다.앞서 언급된 TCP 3-way Handshake의 동작 방식은 아래와 같다.
[그림4] TCP 3-way handshake
SYN(Synchronization)
SYN(Synchronization) + ACK(Acknowledgement)
ACK(Acknowledgement)
[그림5] TCP/IP Model
TCP/IP(Transmission Control Protocol/Internet Protocol) 모델
은 컴퓨터가 서로 데이터를 주고 받을 때에 그 네트워크 통신 과정을 크게 4개의 계층(Layer)로 나누어 놓은 모델이다. 흔히 TCP/IP 4계층
이라고도 부른다.
컴퓨터간 통신을 할 때에는 최상위 계층인 응용 계층(Application Layer)
부터 최하위 계층인 네트워크 인터페이스 계층(Network Interface Layer)
순으로 각 계층을 한 번씩 거치게 된다. 각 계층의 역할과 특징은 다음과 같다.
예시
HTTP, FTP, SSH ...예시
TCP, UDP, PORT ...예시
IP ...공인 IP(Public IP)는 전세계에서 유일하게 식별될 수 있는 IP를 의미하며, 인터넷 서비스 공급자(ISP)를 통해 할당받는다. 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 컴퓨터가 해당 공인 IP를 통해 접근할 수 있다. 따라서 공인 IP를 사용하는 경우 보안을 더욱 신경써야 한다.
예시
도로명 주소와 같이 유일하게 식별할 수 있는 값 → 서울특별시 강남구 테헤란로 427
[그림6] 터미널에 공인 IP 출력
$ curl ifconfig.me
위와 같은 명령어를 입력하여 공인 IP를 출력할 수 있다.
사설 IP(Private IP)는 네트워크 내부에서만 식별될 수 있는 IP를 의미하며 라우터(공유기)에 의해 할당받는다. 이름에서 보듯이 인터넷상에서는 확인이 불가능하며 내부 네트워크에서만 사용 가능하다. 일반 가정이나 회사에서 라우터(공유기) 등의 장비가 하나의 공인 IP를 할당받고 나누어 쓰는 방식으로 주로 사용된다.
예시
층, 호수와 같이 여러 곳에서 중복될 수 있는 값 → 13층 1302호
[그림7] 터미널에 사설 IP 출력 - MacOS
MacOS의 경우 다음과 같은 명령어를 입력하여 [그림7]
과 같이 사설 IP를 출력할 수 있습니다.
$ ipconfig getifaddr en0
[그림8] 터미널에 사설 IP 출력 - Ubuntu
[그림9] 터미널에 사설 IP 출력 - Linux
Linux(Ubuntu)의 경우 다음과 같은 명령어를 입력하여 [그림8]
혹은 [그림9]
과 같이 사설 IP를 출력할 수 있습니다.
$ hostname -i
프로토콜
이라고 하며 가장 많이 쓰이는 것은 TCP/IP
다.IP
는 복잡한 인터넷 망을 통해서 통신을 하더라도 전송할 데이터가 올바르게 목적지에 도착할 수 있도록 해준다.TCP
는 IP와 함께 사용되며 IP의 여러 한계점들을 보완한다.