클라우드응용SW개발

[cloud] 클라우드 데이터 플랫폼(1)

jubin0615 2026. 3. 23. 22:53

백엔드 시스템을 설계하고 개발할 때는 결국 데이터를 어떤 방식으로 저장하고 처리할 것인지에 대한 고민이 중요해진다. 그동안 주로 다뤄온 데이터는 회원 정보처럼 항목이 일정하게 정리되어 있고 구조가 명확한 형태가 많았기 때문에, 자연스럽게 관계형 데이터베이스(RDBMS) 중심의 방식에 익숙해져 있었다. 이에 따라 정해진 구조 안에서 SQL 쿼리를 사용한 CRUD 방식을 주로 사용하였다.

 

하지만 최근 개인 토이 프로젝트로  '뉴스 레이더 에이전트( https://github.com/jubin0615/news-radar-agent )'를 구상하며 외부 API를 연동하다 보니, 기존의 테이블 구조만으로는 한계가 있다는 것을 느끼고 있었다. API 통신으로 수집하는 JSON 형태의 반구조화 데이터는 물론이고, 형태가 자유로운 뉴스 기사 본문 같은 비구조화 데이터까지 효율적으로 파싱하고 저장해야 했기 때문이다.

 

따라서 데이터의 종류부터 클라우드 환경의 데이터베이스 아키텍처까지 백엔드 개발자의 시각에서 정리해보았다.


📍데이터의 형태

데이터는 저장되는 방식에 따라 크게 세 가지로 분류된다.

  • 구조화 데이터 : 가장 익숙한 테이블 형태의 데이터이다.
  • 반구조화 데이터 : 실제 데이터 내에 필드별로 구조가 정의되어 있는 형태이다. 백엔드 API 연동 시 매번 마주하는 JSON을 비롯해 AVRO, ORC, Parquet 등이 여기에 속한다.
  • 비구조화 데이터 : 이미지, 영상, 음성 파일처럼 명확한 스키마가 없는 데이터이다.

 

 

📍 OLTP vs OLAP

데이터를 어떤 방식으로 활용하느냐에 따라 처리해야 하는 작업의 성격이 완전히 달라진다.

  • OLTP(온라인 거래 처리) : 애플리케이션 안에서 일어나는 다양한 요청과 변경 사항을 기록하고 반영하는 역할을 한다. 데이터는 한 번에 한 트랜잭션 단위로 저장되며, 여기서 가장 중요한 것은 트랜잭션의 신뢰성을 보장하는 ACID 속성(원자성, 일관성, 격리, 영속성)이다. 일반적인 서비스의 백엔드 DB가 수행하는 역할이다.
  • OLAP(온라인 분석 처리) : 의사 결정이나 데이터 분석을 목적으로 한다. 실시간 저장이 아닌, 주기적으로 데이터를 큐브에 로드하고 집계하여 저장하는 방식을 취한다. 따라서 비즈니스 정보의 요약이나 추세를 파악하는 데 사용된다.

또한 원시 데이터를 의미 있는 정보로 전환하는 처리 방식에 있어서도, 데이터를 모아두었다가 한 번에 처리하는 일괄 처리(Batch Processing) 와 데이터가 도착하는 즉시 처리하는 스트림 처리(Stream Processing) 로 나뉜다.

 

 

📍 NoSQL (Not Only SQL)

기존 관계형 데이터베이스(RDBMS)의 고정된 구조만으로는 대응하기 어려운 요구가 늘어나면서 이를 보완하기 위한 방식으로 NoSQL이 등장했다.

 

비관계형 데이터는 동일한 컬렉션 안에서도 entity마다 서로 다른 필드를 가질 수 있으며, 테이블 형식이 아닌 다수의 스키마를 허용한다.

 

이러한 유연성 덕분에 다양한 분야에 폭넓게 사용된다. 데이터 모델 또한 키/값(Key/Value), 문서(Document) 기반, 열 패밀리(Column Family), 그리고 관계를 중심으로 entity를 저장하는 그래프(Graph) DB 등으로 다양하다.

 

 

📍 Azure Database for MySQL

직접 리눅스 서버에 DB를 설치하고 운영할 수도 있지만 Azure 환경에서는 PostgreSQL, MySQL, MariaDB 같은 대표적인 오픈소스 데이터베이스를 PaaS로 제공한다. 백엔드 개발자 입장에서는 인프라 운영과 관리에 들여야 할 부담을 줄이고, 그만큼 핵심 기능과 비즈니스 로직 개발에 더 집중할 수 있다는 장점이 있다.