Tag Archives: Advent Calendar

GitHub Pull Request가 자동으로 close되는 경우는?

LINE 개발 팀에서 서버 쪽 개발을 담당하고 있는 Ohara(@kory1202)입니다. 저희 팀은 PR(Pull Request)을 master 브랜치(branch)로 생성하는 방식으로 Git을 운영하고 있습니다. 이런 방식으로 Git을 운영하면 PR을 merge했을 때 다른 PR이 ‘자동으로 close되는 상황’이 발생하곤 했는데요. 정확히 어떤 조건에서 자동 close되는 것인지 확실히 알 수 없었습니다. GitHub Help > Closing a pull request를 읽어 보아도 원하는 답이 나오지 않더군요. 그래서 아예 직접 정리를 해보았습니다.

LINE LIVE 서비스의 인코더 레이어 구조

안녕하세요, LINE에서 글로벌 인프라 시스템을 운영하는 조직에서 개발자로 일하고 있는 김수혁입니다. 2017년 12월 10일은 LINE LIVE 서비스가 공개된 지 2년이 되는 날이었습니다. 서비스 출시 후 수많은 개발자들의 노력으로 지금까지 큰 장애없이 원활하게 운영되고 있습니다. 이번 블로그에서는, 라이브 미디어 서비스를 구축하거나 운영해 본 경험이 없는 상태에서 초기 설계와 구축을 진행하면서 개인적으로 고민했던 내용을 정리해 보았습니다.

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