일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리트코드
- 네이버 검색 시스템
- 프로콘 갈림현상
- Github
- GitHub Desktop
- 취준
- 백트래킹
- 프로콘
- DP
- SRE
- C++
- Python
- 자소서
- baekjoon
- ASF-110
- Algorithmus
- programmers
- 제노블레이드 2
- 코딩테스트
- 프로그래머스
- git
- Ultimate Search
- Pro-Con
- algorithm
- 알고리즘 종류 정리
- 알고리즘
- 백준
- LeetCode
- 격리수준
- python3
- Today
- Total
산타는 없다
LINE Messaging Platform Server 2021 직무설명회 정리 본문
본 게시물은 LINE Messaging Platform Server_2021 Webinar을 보고 참고하고자 하는 내용을 정리한 것입니다.
1. Server-Side Engineer 직무 소개
서버 개발자가 하는 일은 크게 3가지로 분류된다.
Development - 기능 개발
- Architecture
- Design
- API Design
- Business Logic
- Storage Design
- Tests
기능이 개발될때 기능에 대한 요구사항(기능, 동작방법)이 정의가 되고 각각 개발 파트에서 어떤 일을 할지 결정한다
서버 개발자의 역할은 그에 대한 API를 설계하고, 어떤 컴포넌트가 어떤일을 할지 정하고, 서버 내부의 비지니스 로직등을 설계하는 일을 한다. 또 기능 개발할 때는 관련 스토리지 설계도 필요하기 때문에 어떻게 저장할지 디자인을 한다.
개발을 하는 내용들은 Unit Test(단위테스트)나 Integrate Test(통합테스트) 를 통해서 테스트를 한다.
Operation - 운영
- Deployments
- Monitoring
- Trouble shooting
- User Support
개발된 기능들은 배포를 해야하는게 이것이 Operation(운영)이라고한다.
실제 유저들이 사용하는 Production 환경으로 배포하고 기능이 잘 동작하는지, 버그는 없는지 테스트와 릴리즈를 한다.
가끔식은 서버들이 죽거나 특정 기능들이 이상하게 동작하는 경우가 있어서 지속적으로 모니터링을 하여 이슈를 대응한다. 또 가끔식 장애도 일어나서 서버에 커다란 부하를 일으키는 일들이 있는데 그런 일들을 핸들링한다.
Improvement - 개선 작업
- Refactoring
- Architecture
- Performance
기능을 개발하거나 운영을 하다보면 고치고 싶은 것들이 많이 나타나는데 보통 기술 부채라고 이를 부르고 서버 개발자들은 이런 개선작업들도 많이 진행을 한다.
코드를 리펙토링한다거나, 아키텍쳐를 좀 더 운영하기 좋은 환경으로 변경한다거나, 퍼포먼스 테스트를 해서 bottleneck을 찾는다거나하는 작업들을 하게된다.
2. LINE Messaging 통계
라인 메세징 플렛폼의 규모
MAU(월간 사용자 지표) / 2020 기준
- Global : 185 Million
- Top-4(일본, 태국, 대만, 인도네시아) : 165 Million
이들이 보내는 메세지 양(Daily Messages)이 4.2 Billion(2016기준)정도가 된다
공개된 자료에는 이 정도가 들어있기는하지만 실제로 메세지 플렛폼에서 들어오는 요청량은 훨씬 많다.
메세지 뿐만이 아니라 유저들이 만들어내는 다양한 이벤트들이 이보다 더 큰 트래픽을 만들어낸다.
서버 개발자들이 이런 엄청난 트래픽하에서 개발, 운영, 개선작업 들을 해야한다는 뜻이며 어떻게 보면 상당히 첼린징한 작업이고 라인에 와서 짜게되는 코드가 이런 트래픽을 받으면서 쓰이게 된다.
3. Messaging Platform 업무 소개
내부적으로 몇가지 도메인으로 나눠진다.
Gateway
라인 클라이언트와 내부 컴포넌트들을 연결하는 관문이 있다. 수억개의 라인 클라이언트 혹은 외부 클라이언트들과 커넥션을 관리하고 메세징을 비롯해서 여러 서비스들과 안정적으로 API 리퀘스트를 연결해 준다.
Messaging
유저가 메세지를 보내고 받고, 그룹에 가입하고 탈퇴하고 한다던지 하는 여러가지 API들이 모두 이 영역을 거치게 된다. 많은 비지니스 로직들이 이 안에 포함이 되어있다.
Messaging쪽은 대용량 트래픽 처리가 중요해서 레디스, hbs, 카프카 등 스토리지를 위한 팀들이 따로 있고 거기서 최적화를 하면서 관리를 한다.
Auth(인증)
요청들에 대해서 해당 클라이언트나 유저가 유효한지 계속 확인을 하는데 이 것을 Auth 영역에서 담당을 한다.
라인에 가입한다던지 하는 모든 유저에대한 정보는 auth에서 관리한다.
Open Platform
외부개발자들이 라인을 이용해서 메세지를 보낸다던지 하는 API들을 제공하는데 그런 서드파티를 위한 플렛폼을 Open Platform이라고 한다.
Open Chat / Shop
오픈 쳇이나 스티커를 사고 팔고하는 전자지갑을 담당
4. Messaging Platform 기술 소개
프로그래밍 언어
- Java - 주로 많이 사용
- Erlang - 병행성에 특화된 언어. 게이트웨이 도메인에서 사용
- python - 내부 스크립팅이나 머신러닝쪽에서 많이 사용
- Kotlin - 최근에는 조금씩 사용
프레임워크 - 모두 자바 관련
- Armeria - Line에서 만든 Netty기반의 비동기 RPC 클라이언트 서버 라이브러리
- spring / spring boot
- Tomcat 서버
스토리지 - 데이터 종류나 서비스 종류에 따라서 선택해서 사용
- redis
- mongoDB
- HBASE
- MySQL
- elasticsearch
비동기 메세지 전달
- Kafka
- RabbitMQ
5. Data Platform 업무 소개
빅데이터를 다루는 플렛폼
메세징 플렛폼을 포함해서 여러가지 데이터 소스들에 있는 데이터들이 Data Platform에 모이게된다.
모아진 데이터들을 처리, 분석, 검색, 시각화하는 여러 시스템들을 Data Platform에서 제공한다.
시스템을 통해서 개발자나 데이터 분석자들이 원하는 데이터들을 탐색하고 새로운 기능을 개발을 도와준다.
6. Data Platform 기술 소개
Genearl
- Grafana
- spring
- Go
- Java
- python
ML/DL
- TensorFlow
- CUDA
- PyTorch
- mlflow
Kubernetes
- Docker
- Istio
- ceph
Data Engineering
- kafka
- hadoop
- HIVE
- spark
- presto
- druid
- elasticsearch
- jupyter
7. LINE Platform Engineering 조직 소개
플렛폼 엔지니어링안에서도 서버에 속한다
서버팀, IOS/Android/Desktop팀, 웹 팀, 소셜 팀, 인프라팀, 미디어팀이 같이 협업하여 기능 개발
메세지 플렛폼과 데이터 플렛폼은 라인에 근간이 되는 데이터를 다루고 있기 때문에 라인이 하고 있는 다른 서비스에도 API를 제공한다
국가 간 협업 - Seoul, Kyoto, Tokyo, Fukuoka, Dalian, Taipei, Hanoi, Bangkok, Ho Chi Minh, Jakarta
10 development centers in the world
업무를 위한 커뮤니케이션은 통역사분을 통하거나 영어를 사용
8. Activities 기타 활동
Open Source
Armeria나 센트럴도그마 같은 오픈소스
Conferences
Workshops
9. Experience at LINE
서버개발자로 어떻게 성장할지 고민할 때, 결국 학습과 성장이라는 주제로 선택을 하게되고 라인이 학습과 성장에 적합한 회사라 생각
자신의 전문성을 키울 수 있는 배경이 있어 서버 개발자로써 매력적인 학습공간이라 할 수 있다.
다양한 관점으로 다양한 사람들과 일을 할 수 있고 도와준다.
하나의 기능을 개발 하더라도 여러 국가에 서비스하기 때문에 국가별로 어떻게 다른지 배울 수 있다
기술을 사용하는 것에 있어 자율성이 있다.
10. Interview Preparation
실질적으로 면접을 준비할 때 어떻게 해야할까
- CS 기본
- 자료구조, 알고리즘, 운영체제, 데이터베이스, 네트워크
- CS에 대한 기본기를 꼭 챙겨야한다
- 업무 진행할 때도 가장 기본이 되는 부분
- 메일 밀접하게 연관이 된다
- 사고 훈련
- 어떤 상황이 있을 때 왜 이렇게 했나, 또 이렇게 하면 어떻게 되고, 저렇게하면 어떻게 될지 상상해 보는 내용
- 실제 업무를 할 때도 이런 코드에서 에러가 발생하면 어떻게 처리할까, 트래픽이 많아지면 어떻게 처리할까 다양한 상상을 하면서 코드를 작성하기 때문에 이러한 사고 훈련이 중요하다
- 면접에서도 경험을 바탕으로 상황에 변형을 하고 지식의 깊이를 물어보는 질문을 하게 될 것
- 성장 마인드 셋
- 라인에 환경이 성장을 할 수 있는 환경이지만 쉽지만은 않다
- 스스로 하려는 의지가 없다면 어려울 수 있다.
- 자신이 성장하고 싶다는 의지를 어필해야한다.