Infra, 어떤 업무를 하게되나요?

안녕하세요, 여러분!
인턴십에 지원하기 딱 좋은, 맑고 기분 좋은 날입니다! 많은 분들이 성원해 주신 덕분에, 이번 2022 Kakao Tech Internship for Developers 설명회가 무사히 마무리되었습니다.

이번 설명회가 지원자분들께 조금이나마 도움이 되셨기를 바라며 준비한 만큼, 비록 온라인이지만 많은 분들을 만나 뵐 수 있어 설레고 또 신나는 시간이었습니다. 

다만, 휴일에 진행되었기에 일정 상 참석이 어려우셨던 분들, 설명회를 참석했지만 다시 한번 고민 중인 분들을 위해 각 직무 별 주요 내용을 공유하여 직무 선택에 도움을 드리고자 합니다.🙌🏻

알수록 더 매력적인 Infra 분야에 지원을 망설이고 계신다면, 아래 글을 참고하셔서 Infra 개발, System Engineering, 그리고 Network Engineering 직무에 대해 더 깊이 알아가 보세요! 

그럼 지금부터 시작합니다 🙂



카카오의 인프라


카카오의 인프라를 설명하기 전, 우선 인프라란 무엇일까요?
인프라의 일반적인 의미는 국가와 사회가 원활하게 돌아갈 수 있게 해주는 기반, 사회간접자본입니다.

오늘날의 이에 대한 인식은 일반적인 하드웨어에 기반하고 있는 자원 요소를 넘어서, 오픈소스 플랫폼 서비스, 클라우드화된 자원을 즉시 서비스처럼 제공하는 컴퓨팅 플랫폼, 네트워크와 관련된 소프트웨어나 애플리케이션 등 기능적 요소를 가진 DNS, 인증서, Load Balancer와 같은 부분까지도 모두 인프라로 인지하고 있습니다. 

현재 카카오 인프라에는 70개가 넘는 주요 서비스들이 운영되고 있으며, 소규모 서비스까지 포함하다면 훨씬 많은 서비스들이 운영되고 있습니다. 수많은 서비스를 안정적으로 제공하기 위해 카카오는 수만 대의 서버들을 운영하고 있습니다. 이러한 물리 서버뿐만 아니라 가상 머신까지 포함한다면 그 수는 훨씬 늘어나게 됩니다. 

또한 카카오는 자체적으로 수백 Gbps의 인터넷 트래픽을 처리하고 있으며, 외부 CDN 트래픽까지 더해진다면 훨씬 더 많은 트래픽을 카카오에서 처리하고 있습니다.

또한, 국내 총 4개 이상의 IDC 센터와 미국, 유럽, 동남아, 일본 4개의 Global POP을 운영하고 있는 카카오의 인프라는 날로 확장되고 있으며 2023년을 목표로 안산에 카카오 자체 데이터 센터 설립도 계획 중에 있습니다.


인프라팀 소개

카카오의 인프라팀은 앞서 말씀드린 여러 인프라 자원과 서비스를 활용하여 개발자들이 대고객 서비스를 개발하고 오픈할 수 있도록 원활하게 지원하는 업무를 하고 있습니다. 

이러한 인프라가 안정적이고 적절한 규모로 유지될 수 있게 하고 미래의 추가적인 수요에 대한 확장도 계획하는 등 인프라 자원과 서비스에 대한 관리, 개선 및 모니터링을 지속적으로 수행합니다.

현재 인프라팀은 IT 인프라 구성요소와 비슷하게 조직을 나눠 업무를 수행하고 있습니다.  네트워크 전반을 지원하는 네트워크파트, IDC 데이터센터와 관련된 업무를 지원하는 데이터센터파트, 인프라 전반의 계약/비용 등 업무를 지원하는 인프라기획파트, 그리고 서버 장비, 인프라 관련 개발, 운영체제 기술 관련을 지원하는 시스템엔지니어링파트로 나뉘게 됩니다.


Infra 개발

 

인프라는 서비스 개발의 기반을 제공하고 효율을 높이는 역할을 합니다. 하지만 그것 또한 많은 프로세스와 업무가 수반되게 되는데,  인프라 개발은 그러한 인프라 업무를 위한 서비스와 자동화 집계 등을 제공하여 인프라 업무를 효율적으로 처리하도록 합니다. 


Infra 개발의 역할

– 자동화와 서비스 제공을 하는 목적과 베네핏 5가지

1. Reduce Cost & Errors

복잡한 인프라 업무의 프로세스를 정형화된 시스템으로 개발 및 제공, 업무에 소요되는 cost 정리된 프로세스를 통해 휴먼에러나 실수를 줄여주는 역할을 합니다.

2. Reusability & Repeatability

반복되는 작업과 재사용성이 필요한 코드들을 취합하여 시스템화하고 다양한 인터페이스와 자동화된 기능을 제공하여 업무의 편의를 향상합니다.

3. Process Management & Optimization

시스템을 제공함으로써 업무 프로세스의 변경을 하나의 시스템에서 처리하고 해당 프로세스 내에서 자동화가 가능한 부분을 도출하여 효율화합니다. 다양한 프로세스들을 연관 지어, 보다 효율적인 시스템을 구축하는 것이 목표입니다.

4. Requirements & Ideas 

사용자 필요 및 요구사항을 만족시키기 위한 것으로, 인프라 개발인 만큼, 인프라 파트 전체가 개발셀의 고객이 됩니다.

5. Support Easy Communication 

중앙화 서비스를 이용함에 따라 커뮤니케이션 범위를 좁혀 보다 원만한 커뮤니케이션이 가능하도록 합니다.


인프라개발셀 소개

카카오의 인프라개발셀은 목적 조직 특성상 기획, 설계, Frontend/Backend 개발과 운영을 전반적으로 수행하고 있습니다. 이러한 목적 조직의 특성상, 각 프로젝트는 파트의 요구에 따라 셀 자체적으로 수립 및 진행하게 됩니다.

프로젝트 수립, 요구사항 분석, 비즈니스 계획, 설계 및 아키텍처 수립, UI 설계 및 개발, DB 설계 및 SQL 작성, Backend 개발프로젝트의 전반의 과정이 안에서 일어나는데, 이와 같은 과정을 통해 셀은 자체적으로 서비스를 구축해나가는 과정을 거칩니다.


– 인프라개발셀의 기본 서비스 및 서비스 구조

Infra 개발셀의 서비스 구조는 Frontend / API와 배치 등을 비롯한 Backend / DB, 주로 로그 적재의 용도로 활용되는 ES를 기본 구성으로 가져가고 있습니다.

더해서, 서비스는 카카오에서 내부적으로 사용하고 있는 DKOS라는 Kubernetes 기반의 서비스를 활용합니다. 

대표적인 서비스로는 카카오 CMDB 역할을 담당하고 있는 IMS , 장비 효율화를 위하여 장비의 사용을 지속적으로 집계하고 리포팅을 하고 있는 유휴장비 관리 시스템 Woodpecker , 그리고 현재 개발 중인 물리 장비 투입 반납 업무 자동화를 위한 Ark Olive 등이 있습니다.

인프라개발셀은 다양한 인프라 도구와의 연계를 통해서 자동화 및 각종 서비스의 개발도 진행하고 있습니다.

사내 서비스로는 Ansible 기반의 ASSA, 킥스타트 기반의 Karas, 그리고 자체적으로 운용하고 있는 인프라 주요 정보를 담당하고 있는 IMS 등을 예시로 말씀드릴 수 있습니다.

개발셀에서는 대략적으로 아래와 같은 기술들을 활용하고 있으니, 지원하실 때 참고 부탁드립니다.

  • 오픈소스 플랫폼 : ES , Redis , Kafka , Docker , 쿠버네티스 , 오픈스택, etc.
  • Frontend : React, Typescript, next.js, etc.
  • Backend : spring boot, etc.
  • DB : PostgreSQL, MySQL, etc.


– Infra 개발에서는 이런 분을 환영해요!

Frontend와 Backend 중 하나의 분야만 가능하신 분도 지원이 가능하며, 팀에서 현재 활용하고 있는 기술에 대해 관심이 많으신 분을 환영합니다. 프레임워크 기술 스택에 대한 경험을 가지신 분이라면 업무에 큰 도움이 될 것 같습니다.

인턴십은 잠재력을 기반으로 성장의 가능성을 찾아가는 과정인 만큼, 관심이 생기신다면 망설이지 말고 지원해 주세요! 카카오에서 더 나은 세상을 만들어나가기를 기대하겠습니다 🙂


System Engineering 

시스템 엔지니어의 업무는 다음과 같습니다.

1. OS(대표적으로 Linux)에 대한 설치, 설정 관리, 튜닝 작업 그리고 트러블슈팅 등을 지원하며, 하드웨어에 대한 성능 측정, 모니터링, 트러블슈팅 등의 업무를 지원하고 있습니다. 

2. 서비스 오픈을 위해 서버 준비 과정에서 이에 대한 서비스 구조 확인 및 시스템 사이징을 수행하고 있습니다. 

3. 장비 선정도 중요하기에, 서버를 구성하는 CPU, Memory, Disk, Storage와 함께 최근엔 AI에 쓰이는 GPU까지 성능을 벤치마킹 및 분석하여 적절한 장비를 선정하는 표준 장비 선정 업무도 함께 진행 중입니다.


더하여, 카카오의 시스템 엔지니어들은 단순히 기반 인프라를 제공하는 것으로 끝나는 것이 아니라,
관리되는 인프라 서비스-managed infra-를 제공하기 위하여 각 분야에 맞는 전담 엔지니어들이 유닛 및 TF로 구성 및 업무를 수행합니다.

서비스의 기반이 되는 ES / Kafka / RMQ / Redis 등 오픈소스 플랫폼 성격의 서비스를 최대한 발굴해서 SaaS 형태로 제공, 지원 및 개선하는 프로세스를 갖추고 있으며 그 과정을 통해서 오픈소스 기반의 다양한 기술력을 쌓고 있습니다. 이 외에 시스템 운영을 위한 내부 툴 개발, 서버 운영을 위한 CLI툴 개발 등 기대하시는 것보다 더 다양한 역할/업무를 수행하게 됩니다.


– System Engineering에서는 이런 분을 환영해요!

시스템엔지니어링파트에서는 다음과 같은 분들을 기다리고 있습니다.

  • 운영 환경의 개선을 위해 끊임없이 고민하고 기여하고 싶으신 분
  • 거대한 인프라를 운영하기 위한 업무 자동화에 관심이 있으신 분
  • 끝없는 호기심과 열정으로 시스템 / 네트워크 / OS와 같은 기반 기술에 대한 이해를 넓히고 싶으신 분


카카오 인프라팀 시스템엔지니어링파트에는 각 부분의 능력자들이 많이 근무하고 있으며,
회사에서의 업무를 통한 실전 경험을 바탕으로 좋은 결과물들을 만들고 있으며 카카오의 인프라 운영 경험을 공유하는 외부 세션에도 많이 초대되어 참여하고 있습니다. 

이번 인턴십을 통해 여러분도 큰 규모의 인프라를 함께 운영하며 경험하는 좋은 기회로 만날 수 있으면 좋겠습니다!

카카오의 System Engineer로 함께 하고 싶은 분들이라면 고민 말고 지원해 주세요!


Network Engineering

 

카카오의 네트워크 엔지니어는, 인프라팀 내 네트워크엔지니어링파트에서 일하고 있는 ‘통신망 담당자들’입니다. 네트워크 엔지니어는 크게 본다면 데이터센터와 오피스 네트워크를 만들고 운영하는 업무를 진행합니다.

Internet Routing, LB, DNS, CDN과 같은 네트워크 서비스를 제공하며 오피스 네트워크, 재택근무용 VPN 등을 지원하고 있습니다.

카카오의 인프라 규모가 큰 만큼, 적당한 상용 도구를 찾는 일이 어렵기에 파트 내에서 직접 만들면서 운영하고 있는데요! 설치 및 관리 자동화, 규모에 맞는 새로운 모니터링, 데이터 분석 도구 (ES, etc), 그리고 일상적 운영의 자동화 등의 업무를 지향하고 있습니다.

  • 일반운영 : 24시간 모니터링, 일반 운영, 장애 대응, 전용 회선
  • 자동화 등 개발 프로젝트 : 운영 자동화, Network Management System, Cloud 이행
  • 용량 확대에 따른 증설 프로젝트 


인턴십 참여 조직 소개

조직으로 보면은 인프라팀 > 네트워크엔지니어링파트 > 총 3개의 셀로 구성되어 있습니다. 서비스 네트워크에 해당하는 네트워크셀, 콘텐츠엔지니어링셀, 그리고 사내 사무실에 필요한 인프라를 지원하는 사내 인프라 셀이 있습니다.

이번 인턴십에 참여한 셀은 사내인프라셀과 콘텐츠엔지니어링셀이며, 다음과 같은 업무를 담당하고 있습니다.

  • 사내인프라셀 : 사내 무선 네트워크 구성/관리, OTP, 유저별 동적 권한 관리 및 리소스 할당 등
  • 콘텐츠엔지니어링셀 : Load Balancer / DNS / GSLB / Proxy / CDN 등 관리 등


사내인프라셀
에서는 카카오 본사 및 공동체도 담당하고 있기 때문에 굉장히 큰 규모로 업무를 진행하게 됩니다. 사무실 내 네트워크 및 특정 인프라 장애 등에 대해 빠르고 긴급한 대응 업무를 수행하며 VPN / OTP 등을 통해 재택근무 인프라 또한 지원하고 있기에 이러한 솔루션들의 효율적 관리 / 운영을 위해 자동화 개발을 수행하는 셀입니다.

콘텐츠엔지니어링셀의 경우 서비스 네트워크 중에 L4~L7을 담당하는 셀입니다. 대규모 트래픽이 들어오면 IP 및 포트, 특정 프로토콜을 보고 다양한 Backend에 다수의 서버로 로드 밸런싱 해주는 장비인 Load Balancer, 도메인을 질의했을 때 IP 정보로 응답하는 DNS, 비슷하지만 헬스 체크 기능 및 좀 더 상세한 기능을 구현할 수 있는 GSLB, 그리고 수백 기가에서 테라급의 트래픽이 발생할 때 국내외 모든 사용자가 균일하고 안정적으로 접속할 수 있게 지원하는 CDN 등을 담당하고 있습니다.

이를 자동화하여 운영하기 위해 셀 내 자체 제작한 API를 기준으로 또 사용자가 편하게 운영 관리할 수 있도록 GUI도 제공하고 있으며 이 모든 것을 종합해서 모니터링이나 로깅 시스템 또한 담당하는 셀입니다.


– Network Engineering에서는 이런 분을 환영해요!

서비스 네트워크에 관심이 있고 Load Balancer, DNS, CDN 및 이에 대한 자동화 개발에 관심이 있으신 분이라면 콘텐츠엔지니어링셀에서, 또한 사무실 인프라 유무선 인증, VDI, VPN 등 자동화에 관련된 개발이 관심이 있으신 분이라면 사내인프라셀에서 당신을 기다리고 있습니다. 큰 규모의 인프라를 다루며 성취를 느끼고 싶으시다면 언제든 지체 없이 Network Engineering으로 지원해 주세요!


꿀팁 Q&A

 

Q. 각 직무에서 필요로 하는 역량 또는 관심분야가 궁금합니다.

Infra개발
Backend에서는 Java / Spring boot, Frontend로는 React와 Typescript를 활용하고 있기에 관련 경험이 있다면 도움이 됩니다. 그 외 SQL 작성 등도 충분한 강점이 되니 참고 바랍니다.

– System Engineering
오픈소스를 계속 발굴하고 서비스화하고 있기에, 온프레미스 환경을 구축하고 ES, Kafka 등 오픈소스들을 사용해 보는 것에 커다란 즐거움과 관심이 있다면 큰 도움이 될 것 같습니다.

– Network Engineering
퍼블릭 클라우드 운영 경험이 있으시거나 VPC, route 53을 쓰며 재미를 느끼고 서버의 OS를 보시며 특정 네트워크 기능 등에 관심이 있으시다면 업무에 도움이 될 것으로 보입니다.


Q. 팀 내 전공/비전공자 비율이 어떻게 되나요? 비전공자라면 인턴 지원에 어려움이 있을까요?

전공자의 비율이 높은 건 사실이나, 실력 및 잠재력이 더 높이 평가되기에 관심이 있는 분야로 걱정 없이 지원해 주시면 감사하겠습니다.


Q. 대용량 트래픽 처리 경험이 필요할까요?

대용량 트래픽 처리 경험 또는 그 외 다양한 경험이 있다면 좋겠지만, 필수로 요구하지 않습니다. 대용량 트래픽 처리 경험이 없어도 인턴십을 진행하며 알아가더라도 업무 진행에 무방합니다.

 



이번 글이 여러분의 고민에 조금이나마 도움이 되기를 바라면서, 이상 이번 설명회 요약을 마치겠습니다.
기술로 연결된 세상을 만들기 위한 카카오의 여정에서, 함께 Krew로 만나 뵐 수 있기를 바랍니다 🙂

감사합니다!

카카오톡 공유 보내기 버튼

Latest Posts

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

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

테크밋 다시 달릴 준비!

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