카카오의 Server 개발자가 된다면?

안녕하세요!

이번 포스팅에서는 4.16(토) 에 진행된 Tech 인턴십 설명회 중 Server 분야에 대한 내용을 담아보았습니다. 인턴십 Server 분야 모집에 관심이 있으셨지만 아쉽게 설명회를 놓치신 지원자분들께 알찬 콘텐츠가 되었으면 좋겠습니다. 🙂

서버 분야는 콘텐츠플랫폼개발 팀장을 맡고 계신 sebastian이 발표하시고, 이후 지원자들이 올려주신 질문으로 Q&A가 이어졌는데요. 인턴십 지원자분들의 어느 때보다도 뜨거운 관심과 열정을 확인할 수 있었던 시간이었습니다.

그럼 아래 글을 통해 인턴십 서버 직무 모집에 대한 정보를 얻고 실제 설명회 현장에서의 생생한 분위기도 함께 느껴 보시죠!

 



– sebastian
안녕하세요 세바스찬이라고 합니다. 오늘 여러분들에게 서버 직무에 대해 소개 드리려 합니다. 서버 직무에 대해 굉장히 전문적으로 설명드린다기보다는 카카오 서버 개발자들은 어떤 일을 하고, 어떤 스킬 셋을 다루는지에 대해 간략히 설명드려보도록 하겠습니다.


Server란?
 

 

‘서버가 터졌다, 렉 걸렸다’라는 말을 많이들 들어 보셨을 텐데요. 서버란, 각종 디바이스에서 인터넷을 경유하여 요청을 보내면, 그 요청을 처리해서 디바이스에 리턴해주는 행위를 하는 애플리케이션 혹은 그런 애플리케이션이 돌아가는 하드웨어를 서버라고 합니다.

클라이언트 애플리케이션이라고 불리는 앱이나 웹 등을 통해 서버에 요청을 보내게 되면, 요청을 받은 서버 애플리케이션들은 파일 시스템이나  데이터베이스 혹은 외부 데이터를 통해 접근하여 사용자가 필요로 하는 데이터를 잘 조합한 후 Frontend로 다시 전달을 하고, Frontend는 사용자들이 볼 수 있는 화면으로 데이터를 재구성하여 화면을 통하여 전달해 주고 있습니다. 그림에서 맨 오른쪽에 Backend라고 되어있는 부분이 서버가 하는 일이라고 보실 수 있습니다.

이 도식은 상당히 단순하긴 한데 실제 비즈니스 환경에서는 데이터를 다 나누어 관리하고 애플리케이션들도 하나의 애플리케이션이 모든 내용을 다 처리하지 않고 구분되어 있고 서로 데이터를 주고받으며 최종적인 데이터 형상을 만들어내기 때문에, 실무 환경에서는 그림보다는 훨씬 더 복잡하게 구성된다고 이해해 주시면 좋을 것 같습니다.


서버 개발자가 하는 일

 

서버 개발자가 하는 일을 요약해 보면, Client를 통해 사용자의 요청을 받아서 각 Client 가 필요로 하는 정보를 취합하고 정리하여 Client로 전달해 주는 애플리케이션 개발을 하는 사람들을 서버 개발자로 보실 수 있습니다. 물론 데이터를 다루고 정리하는데 필요한 운영 틀도 만들고 있습니다. 서버 개발자의 업무는 회사의 규모가 클수록 앞에서 말씀드린 업무에 한정되어 업무를 하고, 회사의 규모가 작을수록 서버 본연의 업무와 연관된 업무까지 수행하는 경향이 있습니다. 카카오의 서버 개발자는 약간의 확장 업무도 수행하지만 비교적 서버 영역에 한정되어 업무를 하는 편이라고 말씀드릴 수 있을 것 같습니다.  


카카오 서버 개발자가 하는 일


카카오 서버 개발자가 하는 주요업무와 카카오의 개발 프로세스는 아래와 같습니다. 


카카오 서버 개발자들이 사용하는 기술

 

서버 개발자들이 사용하는 기술 중 몇 가지만 발췌해 봤는데요. 언어로는 Java를 가장 많이 사용하고요. 그외 Python, Kotlin, 프레임워크로는 Spring, Django, DB로는 MySQL, ES 그 외 javascript 와 react 등 다양한 기술을 사용하고 있습니다.

카카오에서는 ‘이런 거 써야 해요’라고 가이드 드리지 않고, 각 환경과 서비스에 맞춰 최적의 기술을 테스트하여 적용하기 때문에 사용 기술은 부서마다 차이가 있습니다. 입사하신 후 각 서비스에 잘 맞는 기술임을 스스로 증명하실 수 있으면 어떤 기술이든 자유롭게 사용할 수 있습니다.


카카오 서버 개발자들이 담당하는 서비스 / 플랫폼은?

 

서버 개발자들은 사실상 카카오의 모든 서비스에 포진되어 있는데요. 서비스들과 함께 이를 지원하는 전사 플랫폼, 예를 들면 비즈니스플랫폼, K8S를 운영하는 클라우드 플랫폼, 기술품질을 보장하는 기술품질 플랫폼, 스팸 및 어뷰징을 대응하는 스팸 어뷰징 대응 플랫폼 등 카카오의 거의 모든 영역에서 서버 개발자들이 활약하고 있습니다. 

카카오 서버 개발자들은 계속 새로운 세상을 위해 노력 중이고, 혁신적이고 안정적인 서비스를 구현하기 위해 다양한 기술로 무장한 최고의 전문가 집단입니다. 이와 같은 경험을 함께 만들어 나가고 싶으신 지원자분들을 이번 인턴십을 통해 많이 만나 뵙게 되길 기대합니다. 🙂


꿀팁 Q&A

 

sebastian 의 직무소개를 마치고 설명회에  참여하신 지원자분들이 아주 많은 질문을 올려 주셨는데요. Q&A에는 서버 분야 테크 리더이신 glen 과 hoon, royce 도 함께 참석하여 소통하여 주셨습니다. 지원자 여러분들의 열띤 참여에 감사드리며 질문/답변 내용도 짧게 요약하여 소개 드립니다.

 

Q. 이번 인턴십 Server 개발 모집에서 가장 중요하게 보는 역량은 무엇인가요?

– glen
안녕하세요, 톡플랫폼개발팀에서 톡 서버 개발을 맡고 있는 글렌입니다. 인턴십 운영하는 부서마다 기준이 조금씩은 다르겠으나, 공통적으로 보는 기준을 말씀드리고 싶은데요. 지원자분들은 보통 ‘어떤 기술을 알아야, 어떤 경험이 있어야 합격할 수 있을지’에 대해 궁금해하시는데요. 인턴 모집이기 때문에 대부분의 지원자들이 현재 가지고 있는 지식과 기술은 깊지 않은 수준일 것 같아요. 때문에 지식과 기술보다도 실무 하시면서 업무를 진행하는 방식이나 커뮤니케이션 스킬, 조직에 잘 융화되어 함께 성장할 수 있는 분인지를 중요하게 보게 되는 것 같습니다. 

– hoon
기술품질 플랫폼 개발을 하고 있는 훈입니다. 이번 인턴 모집에서 생각하는 최소한의 역량은 학교 과정에서 배우는 CS 기본 역량 정도로 생각합니다. 이밖에는 입사하셔서 얼마나 학습력이 좋은지, 학습력을 토대로 얼마나 성장 할수 있는지가 핵심 포인트가 될 것 같은데요. 또한 적극적으로 알고자 하는 의지와 행동이 중요합니다. 예를 들면 어떤 문제가 있을 때 구글링을 하거나 논문을 찾아보는 등 스스로 방법을 찾아보고, 그래도 모르면 주위 선배, 멘토 통해 질문하면서 적극적으로 인턴십을 수행해 나가시면 좋을 것 같습니다. 인재상은 적극적으로 아이디어를 내고 의견 조율할 수있는 커뮤니케이션 역량, 시행착오를 해나가며 팀워크를 발휘하며 역량을 같이 쌓아 나갈 수 있는 분입니다.

– royce
비즈플랫폼 개발을 맡고있는 로이스입니다. 형식적인 얘기를 바라실 것 같지 않고 실제적인 기준을 궁금해하실 것 같아서 저도 잠깐 고민을 해보았는데, 지원자분들이 너무 어렵게 생각하시는 것 같다는 생각이 살짝 들었어요. 내가 최소한의 기술역량에 미달하지 않을까? 하는 두려움이 있으신 것 같은데 기본적인 CS 관련 기본 지식을 갖고 계시면 역량은 충분하다고 생각합니다. 그다음에 필요한 것은 앞서 두 분이 말씀 주신 배우려는 자세, 얼마나 빨리 습득하고 이해하는가인데, 얼마나 많이 알고 있냐보다는 얼마나 많이 배울 수 있는가가 더 변별력이 있다고 생각해요. 

– sebastian
앞에 세 분이 주신 답변에 동의합니다. 인턴십 지원자분들 대상 공통으로 코딩 테스트가 예정되어 있는데 우선은 코딩 테스트를 잘 통과하셔야겠고, 이외에는 면접관에게 본인이 갖고 있는 열정을 잘 어필해 주시면 충분히 합격하실 수 있을 것 같습니다. 인턴십 진행하는 과정에서 있어서는 빠르게 배우려는 자세가 가장 중요한데, 이것이 한마디로 얘기하면 열정인 것 같아요. 얼마나 열정적으로 인턴십에 임하느냐가 가장 중요한 것 같습니다. 

 

Q. 서버 개발자로 입사하면 어떤 업무를 하게 될까요?

– sebastian
인턴십 모집공고에 나와있는 업무들이 서버 개발에서 할 수 있는 일이라고 보시면 됩니다. 직무소개 때  말씀드린 바와 같이 서비스 업무 즉 톡과 관련된 서버 개발, 포털 쪽 Daum 과 관련된 서버 개발, 광고 비즈니스 플랫폼, 전사 클라우드 관련 백엔드, 큐엔에이, 품질 플랫폼 등에서 다양하게 업무를 하실 수 있습니다.

 

Q. 인턴 크루 중 유독 눈길이 가고 열정 있는 친구라고 생각하신 사례가 있는지 궁금합니다.

– glen
지난 인턴십을 통해 몇분의 인턴 분들을 만나 보았는데 열정 있고 일 잘한다 고 생각한 사례가 있었어요. 면접에 오셨을 때 비전공자 셨기 때문에 전공자에 비해 불리할 수도 있다고 생각하고 면접을 보았는데 생각보다 기본기가 잘 잡혀있고, 도메인에 대한 이해도가 높은 분이었어요. 인터뷰 이후 인턴으로 오시게 되었고 인턴십 과정 중에 과제의 요구사항을 심도 있게 이해하고 관련하여 필요한 기반 기술을 빠르게 배우셨던 것이 인상 깊었습니다. CS 지식은 전공자들보다는 조금 부족했지만 굉장히 높은 점수로 전환 합격하였던 사례였습니다.

– hoon
눈길이 가는 분들은 항상 있고 다들 열심히 해주셨던 것 같습니다. 특히 기억에 남는 사례를 말씀드리자면, 인턴십 과정 중에 과제를 부여받게 되는데, (파일럿 프로젝트가 될 수도 있고 실제 돌아가는 기술 플랫폼의 일부 모듈 혹은 기술 리서치 관련 과제가 될 수도 있어요.) 주어진 과제를 다 하시고 플러스로 본인이 기획적인 아이디어를 추가하고 스스로 리서치해서 제안하는 분들이 있었어요. 스스로 아이디어를 내고 고도화할 수 있는 방법에 대해 사고하고 있다는 생각이 들어 눈길이 갔습니다. 또한 과제 외에도 조직에 인턴 분들끼리 팀워크를 하는 과정에서 리더십을 발휘한다거나 팀워크를 잘 이끌어내는 분들이 있는데, 그런 분들을 볼 때 눈길이 갔던 것 같습니다. 

– royce
특정 한 분의 사례는 아닌데요. 인턴분들이 과제를 수행하는 과정을 보면 요구 되는 것만 잘 완성하는 케이스가 있고, 비록 프로젝트는 시간이 없어 완성도가 조금 떨어졌지만 플러스알파로 ‘이런 부분이 추가되어야 이 프로젝트에 도움이 되지 않을까?’ 하는 고민을 한 흔적이 보이는 분들이 있었어요. 주어진 과제만 완성한 분들보다는 후자가 훨씬 더 돋보였던 기억이 있습니다. 

– sebastian
특히 기억에 남는 분은 java를 한 번도 안 써본 분인데, 인턴십 기간 동안 자바를 기대보다 훨씬 더 잘하게 된 분이 있는데 그분이 얼마나 많이 노력했는지 유추가 되어 기억에 남습니다. 또한 개인적으로 제가 높은 점수를 주고 싶은 분들은 어떤 기술을 사용할 때 이 기술이 여기에 왜 필요한가를 철두철미하게 고민하며 원리를 알아가는 분에게 높은 점수를 주게 되는 것 같습니다.

 

Q. 최근에 kotlin 사용이 늘어나는 추세로 알고 있는데, 카카오에서도 적용될까요?

– sebastian / royce
카카오는 사용 기술에 제약이 두고 있지 않아서 자유롭게 사용하는데요. 아직까지는 java 가 많기는 하나 말씀하신 대로 최근 kotlin 을 사용하는 프로젝트들이 눈에 많이 띄는 것 같습니다.  앞에서 말씀드린 바와 같이 어떤 기술이든 더 유리하다는 것을 스스로 증명할 수 있다면 얼마든지 수용되는 환경으로 생각해 주시면 좋을 것 같습니다. 

 

Q. 데이터베이스 엔지니어와 서버 개발자와의 차이점을 알 수 있을까요?

– sebastian
DBA를 얘기하신 것 같은데요. 데이터베이스 엔지니어는 DB 애플리케이션을 설치, 관리하고 데이터베이스에 대한 모델링을 하고, 쿼리 작성 등의 업무를 하며 서버 개발자와 협업하고 있습니다. DBA가 데이터의 하드웨어나 인프라적인 관리를 한다면, 서버 개발자는 제공받은 인프라를 기준으로 소프트웨어적으로 활용하는 역할을 한다고 보시면 됩니다. 서버 개발자는 DBA 와 협업하여 작성된 쿼리를 가지고 실제 작성된 데이터베이스에 데이터를 저장하고 저장된 데이터를 빼와서 클라이언트로 보내드리기 위한 애플리케이션을 만들고, 데이터베이스 엔지니어는 실제 하드웨어 서버에 데이터베이스를 설치하고 설치된 데이터베이스를 운영하고, 서버 엔지니어와 협업하여 데이터베이스에 대한 모델을 구축하고, 쿼리 작성 과정에서 잘못 작성된 쿼리가 있다면 전문적인 관점에서 도움 주는 역할을 한다고 생각하시면 됩니다. 

 

Q. 졸업 이후 node.js로 개발을 해왔지만 서버 직무로 지원을 희망하는데 가능할까요? 입사하게 되어도 적응이 어려울까요? 

– glen
예전에는 현재 저희가 쓰고 있는 언어, 프레임워크에 대한 경험이 있으신 분이 오셨으면 좋겠다고 생각했었는데, 최근에는 언어, 프레임워크 추세가 많이 달라지고 있어서 정확히 원하는 경험을 가진 분을 채용하기 어렵다는 것을 알고 있습니다. 실제로 어떤 언어 사용했는지가 중요하다기 보다 해당 프로젝트를 하면서 사용했던 프레임워크의 장점 등에 대해 잘 설명할 수 있는 분이라면 서로 다른 언어나 프레임워크 경험을 갖고 있다고 하더라도 향후에 잘 적응할 수 있을 거라는 기대가 있습니다. 해당 언어에 대한 경험이 없더라도 스스로를 낮게 보실 필요는 없을 것 같습니다. 본인이 하신 경험에 대해 잘 설명해 주실 수 있다면 좋을 것 같습니다. 

 

Q. 도메인 이해 능력과 기술적 고도화 능력을 이분화해서 평가한다면 어느 쪽이 더 중요할까요?

– sebastian
이성이 중요한가 감성이 중요한가라는 질문과 같습니다. 특히 서비스에 관련된 개발자에게는 둘 다 중요한 부분인데요. 어느 한쪽이 뛰어난데 다른 한쪽이 완전히 결여되어 있다면 어렵지 않을까 싶습니다. 

– royce
둘 중 한쪽이 뛰어난데 한쪽이 부족한 경우는 많이 없을 것 같다는 생각도 듭니다. 둘 다 중요하지만 정말로 굳이 우선순위를 따지자면, 엔지니어를 채용하는 것이므로 기술 쪽이 우선이라고 답변드릴 수 있을 것 같습니다. 

 


 

이와 같이 Tech 인턴십 Server 분야 설명회와 Q&A 가 마무리되었습니다. 한정된 시간 탓에 더 많은 질문에 답변드리지 못해 아쉬운 부분도 있었지만, 서버 분야에 관심을 갖고 있던 지원자분들에게 정보를 제공하는 동시에 서버 개발자를 꿈꾸는 여러분들의 시작을 함께 상상해 볼 수 있는 시간이었습니다! 

P.S Tech 인턴십 지원을 준비하고 계신 지원자 여러분들, 응원합니다! 어서 빨리 만나 뵙기를 기다리고 있어요. 🤗

Latest Posts