[겨울인턴십 설명회] Data Platform Engineering(DB엔지니어링 / 하둡엔지니어링파트)

안녕하세요! 카카오 인재영입팀 테크 영입 담당자 모네입니다 🙂

지난 10월 15일, 토요일임에도 불구하고 많은 분들이 2022 카카오 채용연계형 겨울 Tech 인턴십 영입 설명회에 참석해주셨는데요!

주말에 진행된 점, 그리고 설명회 진행이 길었던 점을 고려하여 당일 참석하지 못한 분들을 위해 설명회 발표 내용 중 궁금하실 부분만 정리하여 전달드리고자 합니다.

Database Platform Engineer, 과연 나에게 잘 맞는 직무일까 고민하고 계셨다면 지금 이 글에 주목해주세요! 

 

DB엔지니어링파트

지금부터 DB엔지니어링파트의 vincent.oh와 함께 알아가보시죠😎

 

데이터와 데이터베이스

누구나 관심있게 사용하는 어플리케이션과 웹 서비스가 있습니다. ‘데이터’는 이러한 서비스의 핵심요소 중 하나인데요! 

사전과 같이 데이터 소비를 위주로 하는 서비스도 있고 카카오톡과 같은 메세징 서비스처럼 유저가 데이터를 생산, 소비하는 서비스도 있습니다.

서비스의 종류와 무관하게, 모든 서비스는 데이터에 의존성을 가지고 있습니다.

사용자는 특정 서비스를 ‘누린다’고 생각하지만 서비스의 핵심은 ‘정보’이고 해당 데이터는 데이터베이스 없이 관리되지 않습니다.

활발한 서비스일수록 데이터의 양은 늘어가고, 데이터의 양이 많을수록 더 많은 사람이 동시에 데이터를 소비하려고 하겠죠.

 

데이터는 어떻게 관리되어야 할까요?

일반적으로 유저들이 생각하는 데이터베이스는 다음와 같은 구조를 가질 것이라고 예상합니다.
[ 데이터 저장소 > SQL을 포함한 프로그래밍 코드로 명령 입력 > 원하는 데이터를 확인 ]

하지만, 데이터베이스는 그저 데이터를 넣어놓는 단순한 저장고가 아닙니다.

대용량 데이터의 처리를 위해서는 많은 고민이 필요한데요.

서비스를 위해 얼마나 많은 데이터를, 어떻게 저장할지, 또 대용량 데이터 속 원하는 정보를 얼마나 빨리 찾을 수 있을지 고민하며  방안을 찾아냅니다. 이러한 고민을 통해 서비스 데이터는 빠르고 안전하게, 항상 사용이 가능한 상태로 유지해야 합니다. (fast, secure, actionable)

아래 6가지 키워드로 데이터를 어떻게 관리해야하는지 알 수 있는데요!

서비스를 위한 데이터는 안전하고 접근이 용이하게, 하지만 다수에게 공유할 수 있도록 관리되어야 합니다. 더해서, 기업의 입장에서 이러한 데이터 관리를 위해 가장 효율적인 비용을 고민하는 건 당연한 일이죠. 이렇게 관리되는 데이터의 신뢰성을 지키기 위해 일관되면서 무결성을 유지하는 것도 아주 중요합니다. 

예시로, 금액을 저장하기로 한 곳에 액수가 아닌 다른 값이 들어오지 않도록 하는 것, 그리고 송금 시 상대방에게 수신이 되지 않는다면 송금 자체가 취소되어야 하는 것 등을 이야기할 수 있습니다.

 

데이터베이스는 왜 사용해야 하나요? 어떤 점이 좋은가요?

만약, 데이터베이스가 없는 상황에서 직접 파일에 입출력을 하여 데이터를 저장, 조회한다고 가정하면 어떨까요?

시간이 지날수록 데이터의 양은 점점 늘어가겠지만 그만큼 빠른 시간 내에 원하는 데이터를 찾기는 어려워집니다.

또, 혼자 사용하는 데이터가 아니다 보니 여러 사람이 동시에 같은 데이터를 조회, 업데이트할 수 있도록 구현이 필요합니다.

개발자라고 해서 쌓이는 데이터에서 아무나 유저 데이터를 볼 수 없기에 승인을 받고 적절한 권한을 줄 수 있도록 절차를 마련하는 것도 필요하죠.

중복되는 데이터를 최대한 제거해야 데이터 저장 효율도 올라가고 업데이트 시 성능도 더 끌어올릴 수 있겠네요.

거래내역과 같이 중요한 데이터는 백업도 주기적으로 받아야 하며 만약을 대비하여 삭제 데이터의 복구도 가능해야 합니다.

또한, 개발자별 사용하는 언어가 다를 수도 있습니다. 이러한 개발 언어마다 데이터 입출력을 따로 구현하다 보면 개발 언어의 변경에 맞춰 새로 개발하는 것도 필요합니다.

하지만 데이터베이스를 사용한다면 어떨까요?

직접 입출력하는 것보다 더욱 효율적으로 데이터를 저장, 조회 그리고 관리할 수 있습니다. 언어의 문제도 해결이 되는데요!

SQL이라는 표준 언어로 관리가 가능하기에 개발 언어, 데이터베이스 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능합니다.

위 같은 내용을 고려하여 서비스를 위한 데이터는 데이터베이스(DBMS)를 사용하게 됩니다.

이런 내용을 모두 애플리케이션마다 구현하고 예외를 처리하려면 엄청난 리소스가 들지만, DBMS에서는 이를 제공해주기 때문입니다.

전통적인 DBMS는 이런 기능을 모두 제공하지만, 요즘에는 특정 기능을 포기하고 특정 성능을 극대화하는 DBMS가 있기도 합니다. DB엔지니어링파트에서는 우리가 필요한 기능이 각각의 DBMS에서 어떻게 제공되는지 비교·분석하여 활용할 DBMS를 선택하고 있습니다.

 

어떤 데이터를 다루나요?

데이터의 종류도 상당히 많은데요. DB엔지니어링파트에서 주로 다루는 데이터는 ‘유저 접점에 있는 데이터’입니다.

카카오의 모든 서비스들은 항상 데이터를 생산하고 활용하는데, 데이터의 성격/활용 용도에 따라 한가지 서비스에서 꼭 한 가지의 DBMS만 사용하지 않으며 그 성격과 용도에 따라 복수의 DBMS를 선택하여 사용하고있습니다.

유저 접점의 데이터를 저장하는 데이터베이스를 DB엔지니어링파트에서 관리하고 있기 때문에 카카오 및 카카오 공동체의 다양한 서비스 개발자들과 협업 중입니다.

주로 연락이 오는 경우는 카카오에서 새로운 신규 서비스를 출시하거나 데이터를 어떻게 관리하는지 인증 심사를 받아야 하는 경우이며, 파트 내 대처하고 있습니다.

 

어떤 데이터베이스를 활용하나요?

DB엔지니어링파트에서 관리하는 데이터베이스의 종류에 대해 많이 궁금해 하시는데요,

시장에 이미 많은 종류의 DBMS가 있지만 많이 사용하시는 데이터베이스 중에서는 아래 네 가지를 꼽을 수 있습니다.

  • Oracle
  • MySQL
  • PostgreSQL
  • MongoDB

 

현재 주력으로 다루고 있는 DBMS는 MySQL, PostgreSQL, MongoDB인데요.

파트에서 데이터베이스를 선정해서 지원할 때 최초는 Oracle을 위주로, 이후 MySQL, PostgreSQL, MongoDB 순으로 지원하게 되었습니다. 지속적인 모니터링을 통해 DBMS를 검토하고 새롭게 지원하는 방식을 활용하고 있으며 소규모로 사용하는 DBMS도 특정 목적에 따라 지원하고 있습니다. 

예시로, MongoDB의 경우 약 2012년부터 사용되기 시작한 이래 지속적으로 시장에서 가파른 사용률을 보였고 지속적인 모니터링을 통해 이를 확인했습니다. 이를 통해 MongoDB도 주력 DBMS로 삼아 적극적으로 대응하여 플랫폼으로 갖춰가고자 준비, 현재 지원 중에 있습니다.

이러한 메인 DBMS뿐만 아니라 소규모 DBMS도 특정 목적에 따라 지원을 하고 있는데요. 최근에는 ClickHouse에 대한 시장조사 중이며 GreenPlum은 현재 분석 DB로서 지원하고 있습니다. DBMS를 단독으로 사용하지 않고 활용하는 경우도 있는데요. RocksDB의 경우, MySQL 또는 MongoDB에 스토리지 엔진으로 붙여 사용하는 등 다양한 방법을 시도하고 운영하고 있습니다.

이런 활동에 더하여, 지속적으로 시장에서 많이 사용하는 DBMS는 관심 있게 지켜보고 있습니다.

 

카카오의 데이터베이스 플랫폼 엔지니어

카카오 데이터베이스 플랫폼 엔지니어는 어떤 일을 하나요? 

두 가지로 분류해서 말씀드릴 수 있을 것 같은데요.

  • 카카오 서비스
  • DBaaS Development: 최적의 데이터베이스 사용 환경을 개발하는 것

 

이를 위해 사전 업무가 진행되어야 하는데요. 

우선은 DBMS의 선정이 필수적입니다(DBMS R&D). 

DBMS를 선정한 후 운영하면서 해당 DBMS에 장애가 날 수 있지만 이를 매번 대응하기에는 어렵습니다. 따라서 빠른 시간 안에 자동으로 fail over가 되어 대기하고 있던 Instance가 투입이 될 수 있는 방안들에서 테스트를 진행하게 됩니다(HA/DR). 

또한 데이터의 보안을 위해 허용된 개발자에게만 접근이 되게 하며, 개발자들이 실행한 쿼리들은 자동으로 로깅이 되도록 구현합니다(DB ACL).

DBMS 내 의도치 않은 데이터 유실에도 항상 대비가 되도록 백업과 복구 작업도 자동화하여 구현이 필요하며(Backup & Recovery), 최적의 성능을 낼 수 있는 튜닝 활동도 지속적으로 진행합니다(Performance Tuning).

이러한 작업은 지속적으로 모니터링이 필요한데요. 각종 DB 상태 정보에 대한 이해가 필수적입니다. 이러한 이해를 바탕으로 무엇을, 어떻게 모니터링할지 기획하고 구현합니다(Monitoring). 

모니터링을 바탕으로 이상 징후를 정의하게 되는데요. 이상 징후가 발생하는 경우 검출된 내용을 전달할 개발자를 정하여 다양한 방법으로 빠른 시간 내에 담당자에게 전달되도록 자동으로 구현해둡니다(Anomaly Detection & Alert). 

위 항목들이 모두 준비가 되면 Best Practice를 도출한 뒤 동료들과 공유하게 됩니다.

Best Practice는 어떤 엔지니어가 작업하더라도 같은 결과가 나와야 하기에 표준화를 진행합니다. 이 내용을 자동화하기 위해 모듈을 개발하고, 개발된 모듈을 최종적으로 DBaaS 형태로 완성을 시키는 것이 큰 하나의 주제라고 할 수 있습니다.

이러한 데이터베이스 플랫폼을 만들고 나면 카카오 서비스가 이를 완전히 활용할 수 있도록 지원하게 됩니다.

서비스의 개발자들이 데이터베이스가 필요하다고 하면 플랫폼 위에서 인스턴스를 생성하고(Create Instance), 해당 데이터를 어떻게 쌓을지, 쿼리를 어떻게 던질지 컨설팅을 하며(Modeling), 서비스에서 데이터베이스 관련 이상 징후가 발생하면 함께 지원하고 있습니다(Alert). 서비스에서 발생하는 슬로우 쿼리 등도 튜닝하고 있습니다(SQL Tuning).

 

업무와 팀에 대해서는 어느정도 이해가 생기셨나요?

마지막으로, 신입 또는 인턴을 채용할 때 주로 궁금해 하던 내용을 준비해 보았습니다.

 

카카오에서 일하면서 어떤 점이 좋았나요?

카카오는 데이터베이스 관련 커리어를 시작하기에 매력적인 환경이라고 자신합니다.

카카오뿐만 아니라 카카오 공동체의 다양한 서비스를 함께 지원하기에 다양한 개발자들의 서비스 요구를 경험하고 만들어내며 서비스에 직접 반영되는 것을 직접 확인할 수 있기 때문인데요.

오픈소스 데이터베이스를 지향하기에 벤더사의 도움 없이 스스로 필요한 플랫폼들을 A부터 Z까지 직접 개발할 수 있고 이를 돕는 수십 명의 동료가 있는 것도 장점이죠!

또, 요즘은 클라우드 환경 위에서 DBMS를 운영하는 것이 대세인데, 이를 하다 보면 사용자에게 권한 자체가 주어지지 않는 한계가 있습니다. 카카오는 이가 가능하도록 DBaaS를 구현하고 있기에 보다 깊이있는 경험을 할 수 있죠.(Database as a Service = DBaaS)

따라서 개발자로 비교해서 말한다면, 카카오의 데이터베이스를 하는 것은 풀스택 기술을 모두 경험할 수 있는 것이라고 이야기할 수 있습니다.

 

신입이 데이터베이스 플랫폼 엔지니어를 할 수 있나요?

최근 3년 동안 신입이 전체 인원의 25%이기 때문에 전혀 무리가 없다고 말씀드릴 수 있습니다.

업무에 필요한 것은 처음부터 와서 배울 수 있으며 플랫폼이 자동화되어 있기 때문에 플랫폼을 사용하며 업무를 하게 됩니다.

담당자의 역량에 상관없이 누가 해도 동일한 품질을 내는 서비스를 할 수 있다는 뜻입니다. 경력이 쌓이면 플랫폼 및 모듈의 구성을 자연스럽게 익히게 될 것이고, 이에 대해 코드 기여를 하며 커리어를 발전시킬 수 있습니다.

 

데이터베이스 플랫폼 엔지니어가 시장에서 많이 필요한가요?

스타트업의 경우 인프라 관련 엔지니어 없이 시작되는 경우가 많지만, IT 기업이라면 데이터가 적재될수록 그 필요도가 높아집니다. 또, 데이터베이스가 많아질수록 이를 자동화하여 관리할 수 있는 엔지니어는 더 필요합니다.

예전에는 다음/네이버가 오픈소스 데이터를 많이 사용했지만, 점차 게임 업체, 그리고 요즘은 스타트업까지 많은 회사들에서 데이터베이스 플랫폼 엔지니어의 수요가 높아지고 있습니다.

 

QnA – 가장 많이 물어봐 주셨던 질문들  

 

💬 해당 직무와 관련 있는 경험이 없어도 지원이 가능할까요?

가능합니다. 신입 공채 입사자의 경우 데이터베이스 이해도가 없는 상태에서 들어온 사람들도 있습니다.
다만, 신입 대상이다 보니 인터뷰를 볼 때 지원한 사람의 어떤 점을 보고 판단해야 하는지 고민 지점이 생기는 건 당연한 부분인데요.
따라서 이번 인터뷰는 코딩테스트 합격 후, 인터뷰 전 2주 분량의 과제를 사전에 부여하여 이를 어떻게 접근하고 준비하는지를 기준으로 판단할 예정입니다.

 

💬 비전공자에게 요구되는 역량이 있을까요?

데이터베이스를 만지고 있기에 DBMS 개론 수업을 듣는 것을 추천 드립니다.

하지만 최근에는 해당 전공이 전공 필수가 아니며, 전공자의 경우에도 안 듣는 경우가 많으니 비전공자/전공자 관계없이 해당 내용을 알고 계시면 좋을 것 같아 실무 기반 일반 관련 서적을 읽는 것도 도움이 될 것 같습니다.

 

💬 다른 분야에서의 업무 경험이 있는데 패널티가 될까요?

업무와 유관하지 않은 경력의 경우 평가에 고려하지 않습니다. 

데이터 기술 관련 부분이 있다면 관심을 두겠지만, 아니라면 패널티가 되지 않습니다.

 

💬 현업에 계신 분들이 해당 직무를 선택한 이유가 궁금합니다.

예전에는 신입을 많이 뽑지 않았습니다. 보통 재직 중인 분들도 개발 또는 시스템을 먼저 하다가 이쪽으로 전환한 경우가 많으며, 공채의 경우 입사 시 공통교육에서 DB 직무교육으로 관심이 생겼거나 학부 때 개론 수업을 통해 관심을 가진 경우가 있었습니다. 인턴십의 경우, 타 회사/카카오에서 관련 과제 또는 프로그램을 진행해 보고 관심이 생겨 지원하기도 합니다.

 

💬 파트 내 가장 중점적으로 생각되는 기술이 무엇인가요?

파트의 목표는 대용량 데이터가 대규모의 트래픽을 받을 수 있도록 준비하는 것이며, 여기서 ‘준비’는 성능도 빠르고 신뢰성 있게 운영될 수 있도록 하는 것입니다. 

오픈소스 데이터베이스를 많이 활용할 수 있는 능력이 가장 우선되나 신입에게 요구하고 있지 않습니다.

신입은 DB에 대한 관심 여부가 최우선으로 고려되며 데이터베이스를 잘 이해하고 필요 항목을 자동화할 수 있는 능력이 있다면 더 좋습니다.

 

💬 카카오에서 DBMS 성능 향상과 안정적 운영을 위해 개발했던 DBMS internal 예시가 궁금합니다.


카카오와 같이 서비스를 하는 회사에서는 DBMS internal을 개발하고 있진 않습니다. 데이터베이스를 평가 및 활용할 수 있는 그 위의 구조를 개발하기에, 말씀드릴 수 있는 정확한 경우는 없습니다. 하지만 기존 데이터베이스에서 없는 기능들을 자체 구현 및 개발하여 활용하는 경우는 있다고 말씀드릴 수 있습니다.

 

하둡엔지니어링파트

지금부터는 하둡엔지니어링파트의 빅데이터 플랫폼 엔지니어, Jon.Kwon과 함께 알아가보시죠😇

 

빅데이터 플랫폼 엔지니어가 뭔가요? 

만약 식재료가 있다고 가정하고 이 식재료를 데이터라고 생각해볼까요?
그리고 여기 한 셰프가 이 식재료로 맛있는 요리를 만들고자 합니다.

마치 셰프가 식재료를 가지고 요리를 하듯이 데이터를 수학적으로 또는 통계학적 방법으로 분석을 하고, 또 비즈니스 도메인과 연결하는 것을, 우리는 통상적으로 데이터 사이언스라고 합니다. 그리고 이걸 가능하기 위해서 데이터를 처리하는, 즉 데이터를 수집하고 가공하고 적재하는 것을 데이터 엔지니어링이라고 하죠. 

셰프가 요리를 하기 위해서 요리를 할 수 있는 도구와 공간은 필수적입니다. 물론 장인은 도구를 탓하지 않는다고는 하지만, 사용하는 도구와 공간에 따라 요리의 퀄리티나 생산성은 분명히 달라집니다. 

셰프가 요리를 하기 위해서 도구와 공간이 필요하듯이 데이터 사이언티스트와 데이터 엔지니어가 데이터를 마음껏 주무를 수 있는 공간을 플랫폼이라고 하는데요. 이 플랫폼을 설계하고 구축하고 운영하는 일을 데이터 플랫폼 엔지니어링이라고 합니다. 

그중에서도 하둡엔지니어링파트에서는  빅데이터 플랫폼 엔지니어링을 수행하고 있습니다.

이해를 돕기 위해, 카카오의 데이터 엔지니어가 운영 중인 ‘주방’을 잠깐 살펴볼까요?

우리 주방에는 식재료인 데이터가 약 400 PB 정도 쌓여 있습니다. 

그리고 이 재료를 가지고 우리의 셰프인 카카오의 데이터 사이언티스트와 엔지니어들이 매일 맛있는 코스 요리를 만들고 계십니다. 특히, 카카오에서 가장 큰 주방에 해당되는 공용 하둡 클러스터에는 매일 19만 개 이상의 분석 작업이 수행되고 있습니다. 이러한 많은 작업량을 감당하기 위해서 카카오 140여 개의 ‘주방’, 즉 클러스터를 마련하고 있습니다.

클러스터는 사전적 의미로 여러 컴퓨터를 연결해, 하나의 시스템처럼 동작하는 컴퓨터의 집합소입니다. 일종의 클라우드인데요. 이 클러스터에는 요리를 할 수 있는 화구에 해당되는 데이터 노드(머신)가 약 9,000여 개 갖춰져 있습니다. 그런데 이 화구들은 보통 화구가 아닌,  고도의 컴퓨팅 자원이 집적된 막강한 화력을 가지고 있는데요. 15만여 개의 CPU 코어와 1.27 PB 정도의 메모리가 탑재되어 있기 때문입니다.

때문에, 우리 주방은 여러 셰프들이 동시에 많은 요리를 할 수 있는, 나아가서 섬세한 스토리가 담긴 코스 요리를 만들 수 있는 주방이어야 합니다. 즉, 데이터 사이언티스트와 엔지니어들이 동시에 많은 양의 분석 작업을 하더라도 견뎌낼 수 있는 플랫폼이어야 합니다.

그래서 우리는 가장 오래되고, 가장 보편적이면서도 가장 검증이 된 플랫폼인 하둡을 빅데이터 플랫폼으로 선택했습니다.
우리 역할은 바로, 이 하둡 플랫폼을 안정적으로 제공하기 위해서 엔지니어링을 수행하는 것입니다. 

따라서 우리가 하는 일은 아래와 같이 구조적으로 정의할 수 있습니다.

  • Data Science: 데이터를 수학적, 또는 통계학적 방법으로 분석하고 비즈니스 도메인과 연결하고 이를 모델링하는 것
  • Data Engineering: 데이터를 수집, 가공, 그리고 적재하는 것
  • Data Platform Engineering: 위 두 업무가 가능하도록 아키텍처를 만들고 이를 적용할 플랫폼을 개발하여 이를 카카오의 환경에 녹이고 운영하는 것

 

따라서 데이터 플랫폼 엔지니어링은 데이터 분야의 SRE(Site Reliability Engineering), 즉 신뢰성 엔지니어링을 수행하고 있습니다.

SRE는 구글 엔지니어링이 창안한 엔지니어링 방식으로 IT 운영에 대한 소프트웨어 엔지니어링 접근 방식입니다. 소프트웨어를 통해 시스템을 관리하고 문제를 해결하며 운영을 자동화하는데요. 코드를 통해 대규모 시스템을 관리할 수 있기에 시스템 관리자에게 더 큰 확장성과 지속가능성을 제공할 수 있습니다.

SRE의 핵심 구성 요소는 표준화와 자동화입니다. 따라서, 사이트 신뢰성 엔지니어는 운영 태스크를 끊임없이 개선하고 자동화하는 방법을 모색해야 합니다. 코드 배포, 설정, 모니터링 방식뿐만 아니라 서비스의 가용성, 변경 관리, 비상 대응, 용량 관리 등의 역할을 수행합니다.

그럼 이를 실현하기 위해 하둡 엔지니어링 파트에서는 어떤 일을 하고 있을까요?

 

Big Data Platform Engineer가 하는 일

이해를 돕기 위한 가장 단편적인 예를 소개하려 하는데요!

그에 앞서, 카카오는 빅데이터 플랫폼으로 하둡을 사용 및 운영한다는 걸 기억하시나요?

그렇다면 하둡은 뭘까요?


하둡은 여러개의 컴퓨터를 묶어 빅데이터를 처리하는 기술 중 하나입니다.
이런 걸 분산 컴퓨팅이라고 하는데요.

하둡은 결국 빅데이터 처리를 위한 분산 컴퓨팅의 프레임워크라는 본질적인 특성을 가지고 있습니다. 일종의 빅데이터 클라우드라고 할 수 있죠. 하지만 분산 컴퓨팅을 구현할 때 고려해야 할 요소 중 가장 중요한 것은 규모입니다. 하둡 클러스터는 수천대 또는 수만 대로도 구성할 수 있는데요. 이렇게 많은 자원을 동시에 제어하기 위해서는 기술력에 더해 오랜 경험과 노하우가 필요합니다. 

카카오는 이를 플랫폼으로 개발해서 운영하고 있는데요.
바로 KHP(Kakao Hadoop Platform)입니다.

하둡 생태계에는 하둡 에코 시스템이라고 불리는 많은 분석 도구들이 있는데요.

우리는 이를 평가하고 쓸만한 것을 골라 카카오에 이식할 수 있도록 준비한 후 패키징합니다. 이렇게 탄생한 결과물을 배포판이라고 합니다. (khp-package)

이러한 하둡 배포판을 클러스터로 구축하고 기능을 업그레이드하거나 설정을 변경하기도 합니다. 또한 하둡 안에 있는 특정 컴포넌트를 제어하기도 하는데요. 예를 들어 업그레이드나 패치 또는 장애 조치 등을 위해서 이를 시작하거나, 재시작하거나 중지시키기도 합니다. 큰 일이 아닌 것처럼 느껴질 수 있지만 수천, 또는 수만 대로 구성된 분산 시스템에서 서비스의 영속성을 유지하면서 제어를 할 수 있다는 것은 중요한 일입니다.(khp-ansible)

그리고 아래 이미지와 같은 대시보드들을 만들어 우리의 자원을 관찰하기도 하죠. 우리가 관리하고 있는 클러스터에는 어떤 것들이 있지? 저 클러스터는 어떻게 구성했더라? 얼마나 사용하고 있지? 이렇게 클러스터를 조망하기도 하구요.

클러스터에 문제가 있는건 아닌지 매트릭을 수집해서 확인하기도 합니다.

때론 로그를 검색해서 중요한 정보를 얻기도 하죠.

그리고 필요하면 중요한 상태 정보나 문제 상황을 톡으로 받아보면 좋을 것 같네요.(khp-server)

이런 것들을 가능하게 하도록 에이전트를 개발해서 시스템에 침투시키는데(khp-agent), 수천 대 장비에서 에이전트들이 쏟아낸 정보를 거뜬히 받아낼 수 있는 구조로 되어 있죠.(khp-log)

지금까지 KHP라 불리는 플랫폼을 통해 우리가 하고 있는 신뢰성 구축 활동에 대해서 몇 가지 살펴봤습니다.

다시 한 번 말씀드리지만 이건 빙산의 일각에 불과하며 빅데이터 플랫폼 엔지니어가 하고 있는 모든 활동은, “어떻게 하면 우리 크루들에게, 카카오에게 더 좋은 데이터 분석 플랫폼을 제공할 수 있을까?”라는 질문에 대한 대답으로 이해할 수 있습니다.

더 좋은 데이터 분석 플랫폼을 크루들에게 제공하는 것. 바로 우리 파트가 궁극적으로 실현해야 할 미션이자 비전입니다.

 

Scale에 대해서

마지막으로 스케일에 대해 이야기하면서 마무리하겠습니다. 

서울대학교 산업공학과 이정동 교수님에 대해 소개할까 하는데요. ‘축적의 시간’의 저자이자 우리나라 산업 정책 고문이시기도 합니다. 개인적으로는 Jon이 엔지니어로서 성장하는 데 큰 영감을 주신 분이기도 한대요. 

교수님은 “우리나라의 10년 차 엔지니어는 그냥 10년 차 엔지니어이고, 100년이 된 글로벌 기업의 10년 차 엔지니어는 110년 차 엔지니어”라고 하셨습니다.

무엇이 이런 초인류 기업과 그렇지 않은 기업의 차이를 만든 걸까요? 바로 선배들이 쌓아온 경험과 시간 그리고 그 경험을 어떻게 쌓아왔느냐의 차이입니다. 바로 스케일의 차이죠. 스케일에는 공간적인 개념뿐만 아니라 시간적인 개념이 포함돼 있습니다. 

자, 우리 부서에 지원하시게 되면 대한민국 최대 규모의 빅데이터 플랫폼이라는 물리적인 스케일을 가져갈 수 있습니다. 더하여, 선배들이 겪었던 많은 시행 착오와 경험 그리고 노하우를 얻어 가실 수 있습니다. 

비록 길지않은 인턴십 기간일지라도 여러분들이 이런 스케일을 경험할 수 있도록 열심히 준비하고 있으니 많은 지원 부탁드릴게요.

감사합니다.


 

QnA – 가장 많이 물어봐주셨던 질문들  

 

💬 DB엔지니어링과 하둡엔지니어링의 차이점은 무엇이고 어느 정도 기술과 숙련도를 요구하나요?

데이터베이스와 빅데이터 플랫폼에는 여러가지 종류가 있습니다. 저희가 다루는 대용량 데이터를 처리하게 위해서 하둡이라는 플랫폼을 선택 후 제공하고 있는데요. DB는 카카오의 프론트엔드 서비스와 접점이 있으며, 하둡(빅데이터플랫폼)의 경우 응용분석팀이나 광고추천팀이 사용하듯이 데이터 분석 또는 데이터 사이언스를 위해 필요한 기술로 이해해주시면 감사하겠습니다.
일반 대학 과정에서는 빅데이터를 접하기 어려운 것을 알고있기에 기술이나 숙련도를 잘 익힐 수 있는 준비가 되어있는지를 기준으로 판단하게 될 것 같습니다.

 

💬 빅데이터플랫폼엔지니어 지원 시 어떤 프로젝트 경험이 도움이 될까요?

1번 질문의 연장선상일 것 같은데요. 어떤 프로젝트인가 보다 그 프로젝트로 인해 얻게 된 경험, 지식 등을 물어볼 것 같습니다. 그 경험과 지식을 실제 업무에 어떻게 반영할 수 있을지가 더 중요한 것 같습니다.

 

💬 카카오의 빅데이터플랫폼은 내부적으로 어떤 분들이 어떻게 활용하고 있나요?

대용량의 데이터를 대규모로 분석하고자 할 때 사용되기 때문에 데이터 분석의 요구가 있는 거의 모든 크루가 사용하고 있습니다. 

 

💬 현업에 있는 주니어의 경우 입사 전 어느 정도 깊이로 공부를 하셨을까요? 학교에 빅데이터와 관련 있는 수업이 없다면 어떻게 알아가는게 좋을까요?

개별적으로 차이가 있을 것 같습니다. 하둡에 대한 이해가 있는 분들도 계셨고 아무것도 모르던 분들도 계셨습니다. 기술이라는 것은 수단이 되어야지 목적이 되면 안 되기 때문에 하둡이 아니더라도 더 좋은 플랫폼을 제공하기 위해 노력하는 파트이기에 관련 기술을 두루 보시면 좋을 것 같습니다. 또한 하둡은 자바로 되어있기에 자바 언어에 대한 이해가 높은 분이라면 더 수월하실 것 같습니다.

 

💬 인터뷰에서 주로 보시는 역량은 어떤 부분일까요?

잘 배울 수 있는 사람을 원하고 있습니다. 환경을 경험하기 힘든 것이 사실이기에 경험과 지식보다는 새로운 환경에서 얼마나 빠르게 자신의 것으로 만들고 관련 아이디어를 낼 수 있는 사람인지를 보려고 합니다. 처음 사회로 나오시는 분들이기에 높은 수준의 난이도를 요구하고 있지 않습니다.

 

2022 카카오 채용연계형 겨울인턴십 모집공고 바로가기

카카오톡 공유 보내기 버튼

Latest Posts

제5회 Kakao Tech Meet에 초대합니다!

Kakao Tech Meet #5 트렌드와 경험 및 노하우를 자주, 지속적으로 공유하며 개발자 여러분과 함께 성장을 도모하고 긴밀한 네트워크를 형성하고자 합니다.  다섯 번째

테크밋 다시 달릴 준비!

(TMI: 이 글의 썸네일 이미지는 ChatGPT와 DALL・E로 제작했습니다. 🙂) 안녕하세요, Kakao Tech Meet(이하 테크밋)을 함께 만들어가는 슈크림입니다. 작년 5월에 테크밋을 처음 시작하고,