백엔드 Back-end/데이터베이스 Database

Q. 웹서비스 운영 중 가장 비싼 자원은?

Tap to restart 2023. 5. 18. 10:00
반응형

A. 데이터베이스다.

 
최소로 웹서비스를 운영해도 웹 서버와 관계형 데이터베이스 서버, 파일 서버 정도는 필요하다.
이 중 데이터베이스가 제일 비싸다. 비슷한 사양일 때  웹서버에 비해서 2배 이상 비싸다. 파일 서버는 파일량에 비례하기 때문에 비용이 초기에 적게 든다.
 

가상서버(EC2)와 관계형 데이터베이스 서버 가격 비교

AWS 비용을 살펴보자.
OS Linux ec2 t2.2xlarge의 경우 8 vCPUs에 Memory 32GiB인 경우 1시간당 0.4608$다.

 
이번에는 AWS MySQL 가격을 살펴보자. 
비슷한 사양인 db.m4.2xlarge의 경우 vCPU 8, Memory 32 GiB인데 1시간 당 0.966 USD 달러다. 비슷한 사양의 ec2의 거의 두배다. 한 달 기준 705.18 USD다. 

데이터베이스는 보통 Single-AZ(Availability Zones)로 하지 않는다. 카카오톡 장애처럼 해당 데이터베이스 서버가 있는 데이터센터에 화재가 발생할 경우 데이터에 접근이 안 되기 때문이다. 당연히 Multi-AZ(Availability Zones)으로 한다. 그렇게 하면 금액은 한달에 1410.36$가 된다.

하루에 한번씩 스냅샷Snapshot을 S3에 저장하는 것도 필요하니 S3 비용도 추가된다. 
관계형 데이터베이스만 살펴봤지만, NoSQL 데이터베이스도 비싸긴 마찬가지다.
 

데이터베이스는 개수를 막 늘릴 수 없다

개수를 늘리는 것을 스케일 아웃Scale Out, 사양을 높이는 것을 스케일 업Scale Up이라고 한다. 웹서버는 저렴한 저사양 서버를 100대 200대로 늘리는 스케일 아웃이 가능하다. 하지만 데이터베이스는 스케일 아웃이 어렵다. 

MySQL을 사용한 읽기 전용 복제본 구성

출처: MySQL을 사용한 읽기 전용 복제본 구성

 

관계형 데이터베이스의 경우를 예로 들면 AWS에서 복제본Replication을 추가할 수 있지만 최대 15대로 총 16대까지만 가능하다. Replication 적용 시 1대만 쓰기Write용으로 쓰고 나머지는 읽기Read용으로  쓴다. 곧 쓰기가 많은 서비스라면 스케일 업을 해야 서비스 응답 속도가 개선된다. 스케일 업 할수록 데이터베이스 서버 사용료는 더 가파르게 증가한다.

쓰기는 1대인 이유

데이터 정합성 때문에 쓰기용 데이터베이스를 2대 이상 쓸 수 없다. 한 데이터를 동시에 서로 다른 데이터베이스에서 수정하거나 삭제하는 경우를 생각해보면 쉽게 이해할 수 있다. 


반응형