Carrers

면접 준비하기 - 데이터 플랫폼 개발자

sincerely10 2020. 7. 19. 22:03
반응형

안녕하세요. 이번 포스트에서는 지금까지와는 조금 다른 주제인 커리어와 관련된 포스트 입니다. '데이터 플랫폼 개발자' 직무로 면접을 준비하면서 나올 수 있을만한 면접질문 내용을 적고자 합니다.

저는 원티드를 통해 한 스타트업에서 면접 제의를 받게 되어 지원하였습니다.

1. 데이터 플랫폼 개발자의 역할

관련 내용을 시작하기 전에 가장 중요한 역할 또는 직무에 대한 이해입니다. 카카오에서는 이 직무에 대한 내용을 다음과 같이 정의하고 있습니다.

◆ 조직소개

카카오 내에서 발생하는 다양한 로그를 모아서 가치 있는 데이터를 만들고 있습니다.
서비스에서 발생하는 다양한 로그를 모아 실시간 및 다차원 분석 플랫폼을 만듭니다.
다양한 오픈소스와 대용량 데이터를 다루실 수 있는 경험을 쌓으실 수 있습니다.

◆ 업무내용

    • 카카오의 수많은 데이터를 다양한 관점에서 분석 가능하도록 플랫폼을 만듭니다.
    • 기존의 분석 방법을 벗어나 서비스에서 분석할 수 있게 (self service BI) 플랫폼을 만들고 서비스에 활용할 수 있도록 플랫폼을 만듭니다.
    • 데이터 로그 수집 시스템 개발
    • 실시간 데이터 처리 및 적재시스템 개발
    • 실시간 집계/분석 시스템 개발
    • 대용량 배치 처리 및 다차원 분석 시스템 개발
    • Machine learning을 통한 데이터 클러스터링 및 abnormal 데이터 분석

◆ 지원자격

  • 개발 경력 2년 이상
  • Pyrhon/Java/Scala 등의 언어로 개발하실 수 있는 분
  • 오픈소스와 빅데이터 플랫폼에 관심이 많으신 분
  • 대용량 데이터 처리 유경험자 우대
  • Hadoop, Spark, Hive 등 하둡 관련 시스템 유경험자 우대
  • Elasticsearch, Druid 등의 시스템 유경험자 우대
  • 데이터 비쥬얼라이제이션에 관심 있는 분 우대 (Frontend)
  • 매사 긍정적이고 책임감 있으며 혁신적 사고방식을 가지신 분

참조: careers.kakao.com/m/jobs/P-11132

간단하게 정의하면 BI(Business Inteligence)를 위한 플랫폼을 만드는 역할 입니다. 중요한 것은 대부분의 기업에서 이 BI를 기존의 RDB를 통해서가 아닌 빅데이터 오픈소스를 통해 제작한다는데 있습니다. 거기에 웹 같은 형태로 분석가나 의사결정을 하는 위치에서 조금 더 접근성을 편하게 만들어야 합니다.

제가 지원하는 직무의 주요업무는

데이터 사업을 위한 데이터 플랫폼 구축 및 운영 (자바 또는 파이썬)
다양한 데이터 소스에 대응하는 ETL 개발
- Data 스키마 및 품질 관리

참고로 자격요건도 카카오와 비슷합니다.

- Hadoop, Spark, Kafka 등을 활용한 대용량 데이터 처리 개발 경험
- Cassandra, MongoDB, ElasticSearch 등 데이터베이스 개발 경험
- 데이터 기반의 문제 해결 역량을 가지고 지속적 개선을 위해 노력을 하실 수 있는 분

(자격요건 중 스킬 외의 부분은 생략하였습니다.

2. 면접질문 예상하기

이 포스트를 작성한 주요한 이유이기도 합니다.
제가 작성한 질문에 해당하는 답변을 직접 기재해보겠습니다.

2.1 NOSQL과 RDB의 차이점

먼저 기존 RDB에서 NoSQL이 등장한 배경을 알아야 합니다. 기존의 시장을 점령한 RDB는 시간이 지나 한계를 겪습니다. 무수히 많은 데이터의 저장이 가능해지면서 분산처리 및 저장의 개념인 하둡이 나오고 RDB로는 적합하지 않게 되었으며, 비정형 데이터의 저장 수요가 높아지면서 RDB를 통한 저장의 한계가 왔습니다.

이런 상황에서 NOSQL(Not Only SQL)이 나오게 되었습니다.
그 특징은 다음과 같습니다.

- 약간의 Consistency(일관성)을 포기한 대신 높은 확장성을 갖습니다.
일반적인 SQL이면 ACID(Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(지속성))을 갖습니다. 그러나 NOSQL은 이러한 transaction의 정합성을 포기하고 다양성을 선택했습니다. update가 될 때 마다 분산된 각 노드를 찾아 수정하는 일이 매우 어렵기 때문입니다.
또한, 이 확장성으로 스키마를 갖지 않고 저장할 수 있고, 빠른 Read/Write가 가능해졌고, 분산저장으로 Fault Tolerance가 가능해졌습니다.

- 분산 저장이 가능합니다.
기존의 SQL의 DB 서버에서는 주로 Scale Up에 의한 성능확장으로의 확장성을 가졌습니다. 그러나 NOSQL은 Scale Out의 확장성으로 장비의 대수를 늘리는 방식의 확장성을 갖습니다. 이는 NOSQL이 Scale Out과 같은 수평적 확장(Horizantal Scaling)을 염두하고 개발되었기 때문입니다.

- 대부분이 오픈소스로 운영된다.
기존의 RDB의 경우 라이센스 비용이 만만치 않습니다. 그러나 NOSQL의 경우 대부분 오픈소스이고 서버를 운영할 비용만 있다면 사용이 가능합니다.

2.2 NOSQL의 데이터 모델(Data Model)

NOSQL의 데이터 모델은 주로 다음과 같이 구분할 수 있습니다.

- Key-Value: 가장 단순한 저장형태로 어떤 데이터 형태도 담을 수 있습니다.
사용하는 DB로는  Memcached, Riak, Redis, Amazon Dynamo DB, LevelDB 등이 있습니다.

- Document: Key-Value 형태에서 발전한 단계로 Value가 계층적인 형태인 Document로 저장됩니다.
MongoDB, CouchDB, MarkLogic 등이 있습니다.

- Column Family(oriented): 간단하게 말하자면, 컬럼 형태로 연속된 데이터를 저장합니다. 이를 통해 자주 사용되는 Column에 쉽고 빠르게 접근할 수 있다는 장점이 있습니다. HBase, Cassandra, Hypertable 등이 있습니다.

2.3 Hadoop에 대한

빅데이터 오픈소스를 다루는 기업에서 하둡은 뗄 수 없는 관계일 것 입니다. 기본적인 분산저장과 처리의 개념을 갖고 있기 때문입니다.
이 포스트에서 하둡에 대한 전체적인 내용을 다루자면 끝도 없을 것 입니다. 여기서는 몇 가지만 간추려서 다뤄보겠습니다.

- Map,Reduce 처리과정
분산처리를 위해 사용되는 주요 function이 Map과 Reduce 입니다. 실제 HQL(Hive Query Language)과 같은 쿼리를 사용하면 map과 reduce가 어느 정도 성공 됐는지도 확인 할 수 있습니다.

아래 이미지는 가장 기본적인 Word Count의 과정을 MapReduce로 도식화 한 것 입니다.

 

MapReduce 뿐 아니라 정말 다양한 활용이 있지만 나중에 Hadoop 카테고리 등에 기록하겠습니다.

2.4 그 외의 오픈소스

최근 많이 사용하고 있는 AWS의 Managed Service인 RedShift, Redis, DynamoDB 부터 시작해서 Spark, Kafka등과 같이 Hadoop Eco System, 또는 ELK 스택 등 다양한 오픈소스에 대한 질문이 있을 것 입니다.

사실 워낙 많아서 상대적으로 참조할 것이 많은 부분에 대해서 학습해보는게 장기적으로 필요합니다. 저는 스스로 학습하는 것이 너무 게을러 진행하지 못 했지만 Spark에 대해서 학습을 하고자 합니다.

2.5 진행했던 업무

이 역시 지나치게 포괄적이지만 가장 많이 물어보시는 질문일 것입니다. 개인적으로는 하둡 운영을 하면서 개선한 포인트를 포트폴리오를 만들어 놓았습니다. 또한, 프로젝트에 대한 포트폴리오도 마찬가지 입니다. 디테일한 질문을 받기 쉽고 잘 대답하면 최소한 이 지원자가 기술적으로 업무를 진행할 수 있다는 수준으로 생각할 것 입니다.

가장 주의 할 것은 어설프게 아는 것을 자기의 것으로 포트폴리오를 작성하는 것 입니다. 완전히 자신의 지식이 아닌데 과대포장했기 때문입니다.

 

여기까지가 대략적으로 생각해본 면접 질문이었습니다. 단순히 면접질문을 예상하는 것 보다 중요한 것은 데이터 플랫폼 개발자가 어떤 역할을 하는지에 대한 이해가 가장 중요하다 생각합니다.

반응형