원하는 기업에서 ElasticSearch와 Debezium 그리고 테라폼 경험을 요구하고있다. 테라폼은 ElasticSearch를 먼저 경험하고 난 뒤에 진행해보자.
먼저 간단한 설계를 해보자. 모두 구현할것은 아니지만, 만약 사용한다면 이러한 그림이 될 것 같다.
1. 사용자는 클라이언트를 통해 검색 요청을 한다.
2. 클라이언트는 API Gateway를 통해 Backend 서버로 요청 한다.
3. 서버는 비즈니스 로직을 통해 검색어를 전처리한다.
4. 서버는 ES를 통해 문서 검색을한다.
5. 서버는 ES를 통해 받아온 문서 id를 통해 DB에 접근한다.
6. DB에 조회 요청을 할때는 좋아요 수, 댓글 수 등 Es에 없는 추가 정보를 처리한다.
7. 클라이언트로 데이터를 반환한다.

다음으로는 쓰기 또는 수정, 삭제 작업의 경우 아래와 같이 진행될 것 같다.
1. 사용자는 쓰기,수정,삭제 중 한 작업을 클라이언트로 요청한다.
2. 클라이언트는 API Gateway를 거쳐 Backend 서버로 요청한다.
3. Backend는 DB정보에 데이터를 삭제한다.
4. Backend는 ES 색인을 갱신하기 위해 비동기메시지(Kafka)를 통해 메시지를 퍼블리싱한다.
5. 갱신서버에서는 메시지를 컨슘 후 ES의 색인을 갱신한다.

이때의 과정에서 Debezium가 필요할 수 있다.
Debezium란?
Change Data Capture(CDC)를 구현하는 오픈소스 플랫폼이다.
CDC란 데이터베이스에서 발생하는 변경 사항(INSERT, UPDATE, DELETE)을 실시간으로 캡쳐하여 이벤트 형태로 다른 시스템으로 전송하는 기술이다. Debezium은 이러한 변경 이벤트를 Apache Kafka와 같은 스트리밍 시스템으로 전달하여 다른 저장소로 실시간 데이터베이스 변경 사항을 처리할 수 있도록 한다.

Debezium을 사용하기 된다면 위와 같은 구조가 될 것이다. 이와 같이 방향성을 잡고 진행해 보자.
'Web' 카테고리의 다른 글
| ElasticSearch 인덱스 갱신을 위한 Debezium 사용해보기 (1) | 2025.06.22 |
|---|---|
| ElasticSearch를 이용한 검색 기능 만들어보기 - 1 (1) | 2025.06.20 |
| [book] 스프링으로 시작하는 리액티브 프로그래밍 - 0 (2) | 2025.06.11 |
| 헥사고날 아키텍처에 관한 생각 (1) | 2025.06.09 |
| 유튜브 설계 (가상 면접 사례로 배우는 대규모 시스템 설계) (1) | 2025.06.04 |