Tag Archives: OpenSource

Promgen은 알림을 어떻게 전달할까요?

안녕하세요, Paul Traylor입니다. 저는 현재 LINE Fukuoka 개발팀에서 LINE 계열의 앱이 사용하는 수많은 서버를 모니터링하는 도구를 개발하고 기술 지원하는 업무를 맡고 있습니다. 제 주 업무 중 하나는 Promgen을 관리하는 일입니다. 참고로 Promgen은 Prometheus가 관련된 팀에게 알림을 제대로 전달할 수 있도록 관리하는 도구입니다. 오늘은 Promgen이 알림을 어떻게 전달하는지에 대한 내용을 다뤄보고자 합니다.

Java와 Armeria로 기본적인 웹 서버 만들기

안녕하세요. LINE Developer Relations 팀의 Developer Advocate 윤인성입니다. LINE은 Armeria, Central Dogma 등의 다양한 오픈소스를 주도적으로 개발하고 있습니다.

오늘은 Armeria에 대해서 알아보고, Armeria를 사용해 기본적인 웹 서버를 구성해보는 방법에 대해서 알아보겠습니다. 이번 글은 Java와 IntelliJ가 기본적으로 설치되어 있다는 것을 전제로 진행합니다.

LINE 프론트엔드 개발팀의 OSS 활동 촉진 행사, ‘Let’s Contribute OSS!’

안녕하세요? Frontend Standardization팀의 Kawasako입니다. 저희 팀은 LINE 프론트엔드 개발 조직의 여러 제품 개발에 공통으로 필요한 도구를 개발하거나, 개발자간 정보 교류 및 커뮤니케이션이 더욱 원활히 이루어질 수 있도록 다양한 기획을 담당하는 부서입니다. 오늘은 저희의 업무도 소개할 겸, 얼마 전 열린 사내 워크숍에 대해 전해드리겠습니다.

Code splitting을 쉽게 하기 위해 만든 grow-loader

안녕하세요, 저는 LINE MANGA팀의 자바 스크립트 개발자, @sunderls입니다. 일본에서는 LINE으로 만화를 볼 수 있다는 것, 알고 계셨나요? 혹시 여러분은 LINE MANGA1) 서비스를 이용해 보셨나요? 예전에 블로그를 통해서도 나누었듯이(LINE MANGA: Page Stack을 이용해서 페이지 전환 처리하기), LINE MANGA는 웹 기반으로 구현되어 있습니다. 이 서비스는 LINE 앱 안에서 구동되는 서비스이기 때문에, LINE 앱을 이용할 때와 마찬가지로 편안하고 매끄러운 UX를 제공하고자 저희는 많은 노력을 쏟았습니다. 우리는 우리의 목표를 달성하고자 code-splitting을 도입하였는데, 이 글을 통해 code-splitting을 손쉽게 적용할 수 있도록 개발한, LINE의 오픈 소스 프로젝트인 grow-loader를 여러분께 소개하고자 합니다.

VoIP 오픈 소스 라이브러리인 PJSIP에서의 버퍼 오버플로우

안녕하세요. 보안실(애플리케이션 보안팀)에서 LINE 서비스의 보안 평가를 담당하고 있는 김영성(Facebook, Twitter)입니다.

이번 포스팅에서는 VoIP 오픈 소스 라이브러리인 PJSIP의 취약점(CVE-2017-16872, AST-2017-009)에 대해 다루고자 합니다. PJSIP는 표준 프로토콜인 SIP, SDP, RTP, STUN, TURN 및 ICE를 구현한 멀티미디어 통신 라이브러리입니다. IP-PBX, VoIP 게이트웨이 등에서 널리 사용되는 Asterisk 프레임워크에서도 PJSIP 기반으로 SIP 스택을 구현했습니다.

이번에 발견한 취약점은 64-bit 환경에서 클라이언트로부터 받은 SIP 요청을 처리할 때, signed int형을 unsigned long 형으로 변환하는 과정 중에, 정수의 부호 확장을 고려하지 않은 것이 원인이며, 결과적으로 이 취약점은 버퍼 오버플로우를 발생시킬 수 있습니다. 취약점을 확인한 후 PJSIP 개발팀에 문의했지만 보안 이슈를 제보할 수 있는 창구가 없어, Asterisk security 대응 창구제보했습니다. 이후 Asterisk의 개발자인 George Joseph씨와 패치에 대해 논의했고, pjproject 2.7.1 버전에 패치(PJSIP 패치, Asterisk 패치)가 적용되었습니다. 이 기회를 빌어 패치 작업을 진행해 주신 George씨께 감사드립니다.

Prometheus를 서비스로 제공하기

안녕하세요, LINE 후쿠오카 개발 부서에서 근무하고 있는 폴 트레일러입니다. 저는 LINE Family App을 위한 다수의 서버를 모니터링하는 업무를 담당하고 있습니다.

대부분의 개발자들은 코딩과 신규 기능 개발에 더 큰 흥미를 느끼겠지만 기능이 제대로 동작하지 않을 때 그 원인을 파악하는 것 또한 매력적이며, 매우 유용하기도 합니다. 모니터링은 문제의 원인을 파악하는 데 큰 도움이 될 수 있는데, 개발자가 모니터링 환경을 직접 구축하고 설정하는 것은 까다로울 수 있습니다. 여기서 바로 제가 등장합니다. 저는 개발자들이 쉽게 서비스별 임계치를 모니터할 수 있도록 돕는 역할을 담당하고 있습니다. 개발자들이 쉽게 모니터링 대상을 등록하고, 담당 서비스에 대한 알림 요청을 설정할 수 있도록 Prometheus 설정 값들을 수월하게 관리하는 Promgen을 개발하여 여러분께 소개하고자 합니다.

모니터링 설정하기

대부분의 서비스는 간단하고 작은 규모로 시작하지만 시간이 지날수록 다양한 구성 요소들이 여럿 생겨나 수백 개의 서버들을 통해 제공되곤 합니다. 이런 환경에서 모니터링을 설정하는 것은 쉬운 일이 아닙니다. Promgen은 모든 모니터링 설정 항목들을 한 곳에서 한번에 볼 수 있도록 개발되었습니다.

targets

LINE Trial Bot SDK의 개발에서 릴리스까지

들어가며

LINE 주식회사의 마쓰노입니다.

얼마 전 LINE BOT API Trial Account가 발표되어 전세계 개발자들의 열렬한 환영을 받았습니다. 기존에는 계약을 맺은 기업 개발자들만 개발이 가능했던 LINE의 Bot 계정을 개인도 쉽게 개발할 수 있게 되었기 때문입니다.
그러던 중에 이 자리를 빌어 LINE에서 왜 LINE BOT API Trial Account를 개발하게 되었는지, 또 1주일 만에 릴리스할 수 있었던 비결은 무엇인지, 전체적인 과정을 소개하고자 합니다.

Bot SDK를 제작하게 된 계기

LINE BOT API Trial Account를 공개하고 얼마 지나지 않아 LINE 내부에서도 많은 엔지니어들이 개발을 시작했습니다. 그런데, 그 엔지니어들은 이 API를 사용해서 Bot을 만들기는 힘들 것 같다!는 사실을 깨닫게 되었습니다.

특히, Java 등의 정적 언어일 경우에는 JSON을 매핑하기 위한 클래스를 억지로 만들어야 합니다. LINE BOT API Trial Account는 API의 엔드 포인트도 많고, 주고 받는 메시지 타입도 많아서 텍스트 메시지·이미지·스티커·리치 메시지 등 여러 개의 클래스를 구현해야 합니다. LINE Developers에 나와 있는 대량의 테이블로부터 클래스를 생성하는 것은 극한의 고통이 따르는 작업이기 때문에, 이건 큰일이다!라고 생각했던 것이지요.

Armeria 오픈소스화 이야기

Armeria는 Java 8 및 Netty 상에 비동기 RPC/API 클라이언트-서버를 구현한 것입니다. LINE은 작년 11월 Armeria를 Apache License 2.0이 적용되는 오픈소스 프로젝트로 배포했습니다. Armeria는 HTTP/2를 세션 레이어 프로토콜로 사용하는 고성능의 비동기 Thrift 클라이언트/서버를 구축하기 위해 만든 프로젝트이지만, 기본적으로 프로토콜의 제약을 받지 않으며 확장성이 뛰어납니다. (예를 들어, HTTP/2를 통해 정적 파일 디렉토리를 처리하는 동시에 Java EE 웹 애플리케이션을 실행할 수 있습니다.)

이 블로그에서는 기술적 측면에 초점을 맞추기 보다는 내부 프로젝트를 오픈소스로 만들어가면서 겪었던 과정을 소개하고자 합니다. Armeria의 기술적 내용을 알고 싶으시다면 지난 2월 개발자들을 대상으로 개최한 제14회 LINE Developer Meetup에서 발표한 슬라이드 자료를 참고 바랍니다.