취업 및 직장/취업 및 직장 이야기

채용 분석용 – 라인플러스 LINE Messenger 클라이언트 개발 경력 모집

가카리 2016. 7. 19. 23:02
반응형

 

이 글은 채용 정보를 보고 제가 모르는 부분 정리용입니다.

 

참고

2016/07/17 - [취업/직장/취업/직장 이야기] - 채용 분석용 - 라인플러스 LINE Messenger서버 개발 경력 모집

 

 

LINE의 핵심 서비스들을 위한 프레임워크와 플랫폼 소프트웨어를 개발하고 있습니다. 

최근에는 HTTP/2와 Thrift에 기반한 RPC 프레임워크인 Armeria를 오픈 소스로 공개한 바 있습니다. 

Armeria를 비롯한 플랫폼 소프트웨어를 개발하고, 

때로는 최종 사용자를 위한 서비스 개발에 참여하는 흥미진진한 경험을 해 보시지 않겠습니까?

여러분이 만든 훌륭한 기술 플랫폼이 LINE 전체에 걸쳐 적용되는 것을 지켜보실 수 있을 것입니다.

 

   

팀의 엔지니어로서 다음의 자질이 요구됩니다: 

- API 디자인과 경험, 코드 품질, 성능에 대한 높은 기준

비동기 프로그래밍 모델을 이해

- 오픈 소스와 협업을 즐김

- 디테일을 잘 챙김

   

연관된 기술은 다음과 같습니다: 

- Java 8

- 네트워크 프레임워크: NettyMINAFinagleVert.x

- 네트워크 프로토콜: HTTP/2, Thrift, Redis, HBase, MySQL

- 멀티스레드 프로그래밍

- 고성능 시스템

- Linux에 대한 충분한 이해

 

[고용형태]

- 정규직

 

[근무지]

- 분당 서현역

 

[기타 사항]

- 본 채용은 수시모집으로 채용완료 시 조기마감 될 수 있습니다.

 

1. HTTP/2

HTTP/2(Hypertext Transfer Protocol Version 2)는 월드 와이드 웹에서 쓰이는 HTTP 프로토콜의 두 번째 버전이다. SPDY에 기반하고 있으며, 국제 인터넷 표준화 기구(IETF)에서 개발되고 있다. 1997년 RFC 2068로 표준이 된 HTTP 1.1을 개선한 것으로, 2014년 12월 표준안 제안(Proposed Standard)으로 고려되어, 2015년 2월 17일 IESG에서 제안안으로 승인되었다. 2015년 5월, RFC 7540로 공개되었다.

(출처 : 위키백과)

HTTP/2는 과거보다 더 빠른 웹을 제공하기 위해 4가지 기술 제공(출처 : http://www.bloter.net/archives/210122)

1) 헤더 크기를 줄임. 허프만 코딩이나 헤더 테이블을 활용하여 기존 헤더 크기보다 3분의 1가량 크기를 줄임

2) 멀티플래스 스트림. 기존 보다 더 적은 TCP 커넥션으로 여러 메시지를 주고받을 수 있다.

 

 

3) 서버푸시. 클라이언트가 요청하지 않은 리소스를 서버가 알아서 보내는 것

4) 스트림 프라이어티. 중요한 요청에 우선순위를 부과하는 기술

 

2. Thrift

페이스북이 개발한 규모 가변적인(scalable) 이종 언어 서비스 개발을 위한 소프트웨어 프레임 워크이다.

Thrift를 이용하는 목적은 다양한 언어를 사용하여 개발한 소프트웨어를 쉽게 통신하기 위함이다. .thrift 파일을 생성하고 thrift 컴파일러로 이 파일을 컴파일하면

c++ 이나 자바 등 여러 언어에서 사용할 수 있는 인터페이스를 자동으로 생성해줍니다. 이 인터페이스를 이용해서 RPC(Remote Procedure Call) 통신을 합니다.

(출처 : http://shuiky.tistory.com/entry/Thrift-%EC%86%8C%EA%B0%9C)

 

3. 비동기프로그래밍 모델

 

 

동기식 모델은 한번에 하나의 태스크만 수행되며 한 태스크가 완료된 후에 다른 태스크가 시작됩니다.

프로그램의 로직이 매우 간단합니다.

 

 

멀티 쓰레드 모델은 각 태스크가 개별 쓰레드에서 수행됩니다. 쓰레드들간의 조율이 필요하기 때문에 멀티 쓰레드 프로그램은 매우 복잡할 수 있습니다.

 

 

비동기식 모델은 태스크간의 수행 순서가 뒤섞여 있지만 모두 하나의 쓰레드 안에서 수행됩니다.

한 태스크가 수행 중일 때 다른 태스크들이 수행중이 아니라는 것을 알 수 있어서 멀티쓰레드 모델보다 간단합니다.

동기식은 중간에 프로그램의 IO작업이 많다면 중간에 디스크나 네트웍 작업이 끝나길 기다리는 시간이 많아집니다. 이때문에 동기식은 블럭킹 프로그램이라고 부릅니다.

하지만 비동기식은 동기식에서 블록되는 시간동안 다른 태스크를 수행합니다. 그래서 논블럭킹 프로그램이라고 부릅니다.

 

동기모델에 비해 비동기 모델은 아래의 경우에 최적이라고 할 수 있습니다.

1) 태스크 개수가 많아서 항상 수행할 태스크가 하나라도 있을때.

2) 태스크들이 I/O 작업이 많아서 동기 방식 프로그램인 경우는 block되어 낭비하는 시간이 많을 때

3) 각 태스크들이 서로 의존성이 적어서 태스크간의 데이터 교환이 필요 없을 때.

 

출처 : http://minorblend.com/post/38618606933

 

4. Netty

자바 네트워크 프레임워크, 비동기 클라이언트 서버 프레임워크인데 빠르고 쉽게 프로토콜 서버와 클라이언트 등의 네트워크 애플리케이션을 개발할 수 있게 합니다.

반복적인 저수준 코드를 내부로 감춤으로써 비즈니스 논리를 분리하고 쉽게 재사용할 수 있게 해줍니다.

 

출처 : http://book.naver.com/bookdb/book_detail.nhn?bid=10462610

 

5. MINA

쉽게 높은 성능과 높은 확장성 (사용자 수의 증대에 유연하게 대응할 수 있는 정도)의 네트워크 어플리케이션 개발 사용자를 돕는 하나의 네트워크 어플리케이션 프레임워크이다.
 그것은 자바 NIO을 경유하여 TCP/IP와 UDP/IP 같은 다양한 전송 위에 추상 - 이벤트 주도 - 비동기 API 을 제공한다.
- NIO 프레임워크 - 라이브러리, 클라이언트 - 서버 프레임워크 - 라이브러리, 네트워킹 - 소켓 라이브러리 라고도 불리워 진다.

 

출처 : http://ksyno3.tistory.com/2

 

6. Finagle

 

트위터에서 오픈 소스 프로젝트로 만든 네트워크 프레임 워크.

* 특징

1. JVM 환경위에서 돌아갑니다. (Java는 아니고 Scala라는 랭귀지로 작성되었습니다. Java와는 매우 손쉽게 연동됩니다)

2. Java PHP Scala등 여러 랭귀지들을 지원합니다.

3. Non-Blocking IO방식을 사용합니다. (유저한테 좋은 응답성을 주도록 구현하기가 용이합니다)

4. Filter를 사용한 Service간의 형식을 변형해줍니다. (HTTP -> Authenticated HTTP ) 

6. Statistics를 다양하게 지원합니다. 

7. REST, Thrift, Redis등 여러 서비스 프로토콜들을 Finagle framework안에서 plug-in방식으로 사용할수 있습니다. (Service Discovery) 

8. 쾌적한 Distributed Logging을 지원합니다. (ZipKin이라는 UI tool을 사용해서)

[출처] Twitter Finagle|작성자 IDEO

 

7. Vert.x

Node.js로부터 영향을 받은 프로젝트입니다. vert.x는 Node.js처럼 Event-based 프로그래밍 모델을 제공하는 서버 프레임워크입니다.

Node.js는 JavaScript로 만들어졌지만, vert.x는 Java로 제작되었습니다. 특징은 다음과 같습니다.

1) 여러 언어 지원

Ruby, Pyton, Javascript로 vert.x를 이용할 수 있습니다.

2) Super Simple Concurrency model

vert.x는 사용자가 작성한 코드가 동일한 스레드에서만 실행을 보장해서 더이상 synchronized나 volatile같은 동기화를 위한 locking 처리를 신경안써도됩니다.

3) Event Bus제공

vert.x로 만든 여러 서버 프로그램이 서로 원활하게 통신하게 하는 것까지도 목표로 두고 있습니다. 이를 위해 Event Bus를 제공하는데 서로 다른 언어로 작성된 서버 애플리케이션이 용이하게 통신

할 수 있습니다.

4) Module System & Public Module Repository

vert.x로 만든 서버 애플리케이션 프로젝트 자체를 모듈화해서 재사용성을 도모합니다.


출처 : http://d2.naver.com/helloworld/163784

 

반응형