Search
Duplicate

#1 서비스인프라개발팀 : 대용량 push 메시지 생성 시스템

이미지
tech_push.png
기술 Stack
Kafka
Docker
MSA

분산처리 시스템 구조개선

안녕하세요, 사람인HR Tech Sourcer 이승빈입니다
이번 포스팅에서는 2019년을 시작으로 구조를 개선하고 꾸준히 고도화 중인 서비스인프라개발팀의 대용량 push 메시지 생성 시스템에 대해 소개해드리려 합니다.
대용량 push 메시지 생성 시스템
예시를 들어볼까요? 사람인HR에서는 대용량 push 메시지 생성을 위해 로봇을 구동하고 있는데 이 로봇에는 치명적인 단점이 있었습니다. 제 역할이 있는 코어와 팔, 다리가 한군데가 고장 나면 다른 부위마저 모두 동작을 멈추고 다운되어버린다는 점이었습니다. 그래서 우리는 로봇의 각 부품을 별도로 조립하여 결합하는 방식의 새로운 로봇 제작을 계획했습니다.
Monolithic Architecture → Micro Service Architecture(MSA)
여기서 등장하는 것이 바로 Monolithic Architecture to Micro Service Architecture(MSA) 입니다. Monolithic Architecture 방식은 일부분의 오류가 전체에 영향을 미치게 됩니다. 때문에 서비스 간의 결합성 및 영향도, 복잡도를 낮추기 위해 중심 Engine을 MSA 방식으로 구조를 전환하고 Docker를 사용하여 빌드, 배포 과정을 개선하기 시작했습니다.
기존 사람인HR의 대용량 push 메시지 생성 기술은 IMDG(In Memory Data Grid) 플랫폼 Apache Ignite 기반으로 클러스터링 되었습니다. 대용량 데이터 관리의 신뢰성을 보장하기 위해 다수의 컴퓨터 메모리를 공유하여 하나의 큰 메모리 저장소를 구축하는 분산 메모리 시스템 IMDG는 성능적 이슈는 없었지만, 운영 측면에서 큰 이슈가 있었습니다.
위에서 설명해드린 상황과 유사하게 Engine 장애 시 모든 기능이 마비된다는 것이었습니다. 기술팀은 결합성이 낮고 유연하게 운영을 쉽게 가져가기 위해 중심 Engine의 기능을 각 영역으로 다음과 같이 MSA구조로 분리했습니다.
Engine에 정보를 등록하는 ‘관리자’
관리자의 메시지를 수신하여 스케줄을 등록하는 ‘스케줄러’
실시간성 데이터를 빠르게 처리하는 ‘에이전트’
Docker
MSA 방식으로 분리된 영역을 빌드하고 배포하기 위해 사용된 기술 스택이 바로 Docker(Containerize)입니다. Docker란 소프트웨어를 서버에 구애받지 않고 실행시키기 위해 필요한 환경을 신속하게 구축하고 배포해주는 플랫폼입니다. 컨테이너화 된 각 영역은 프로세스로써 독립적으로 실행되어 한 곳에서 장애가 발생하더라도 서로 영향을 끼치지 않습니다.
Kafka
영역 내외로 메시지 전송을 위해 사용된 기술 스택은 Kafka입니다. Kafka란 분산 데이터 스트리밍 플랫폼으로 프로세스 간 데이터 교환 통신 방법인 메시지 큐의 한 종류입니다. Memory를 주로 사용하는 다른 메시지 큐 시스템과 달리 Kafka는 논리적으로 연결된 순서에 따라 블록을 읽어 들이는 방식으로 Seek time을 최소화하면서 Disk를 기반으로 한 데이터 스트리밍 처리 방식이기 때문에 상대적으로 느린 문제점을 보완하면서 동시에 시스템 일부 구성 요소가 작동하지 않더라도 계속 작동할 수 있는 내결함성의 특성을 가지는 메시지 전송의 안정성을 보장하는 기술입니다.
구조 개선의 결과
메시지 전송 손실 비율 0%
Push 생성 시간 감소
빌드, 배포, 구동 시간 약 70% 감소
도메인 별 자유로운 운영 가능
이번 포스팅에서는 MSA 방식으로의 구조 전환과 함께 Docker와 Kafka를 사용한 서비스인프라개발팀의 IT기술 대용량 push 메시지 생성 시스템을 살펴보았습니다. 운영하는 서비스의 규모가 커지면서 MSA 구조로의 전환은 필수 불가결한 과정입니다. 개발자분들의 경우 사전에 프로젝트의 규모나 성장 가능성을 염두하여 프로젝트의 방향성을 설계하는 개발 가치관을 가지신다면 도움이 될 것이라고 생각합니다.
개발에 사용되는 기술 스택의 개념을 위주로 비 개발자를 포함하여 큐레이션을 읽어주시는 모든 분들이 이해하기 쉽도록 작성하기 위해 앞으로도 계속해서 노력하겠습니다. 다음 포스팅에서는 쿠버네티스 인프라를 기반으로 한 CI/CD 운영 방식을 소개해드리겠습니다. 사람인HR의 기술에 대한 궁금증이나 큐레이션에 대한 피드백은 언제든지 환영하고 있습니다. 앞으로도 사람인HR 피플팀의 개발 큐레이션 많은 관심 부탁드립니다. (사람인HR Tech Sourcer 이승빈 E-mail : lsb5368@saramin.co.kr)

출처 및 참고 사이트

IT기술블로그 본문