Category Archives: Back-End

Letter Sealing 확대 적용으로 더 안전해진 LINE

지난 ‘더 안전한 대화를 위한 Letter Sealing’이라는 기사를 통해 LINE에서 1:1 대화에 종단간 암호화(End-to-End Encryption, E2EE)가 적용되었음을 전해드렸습니다. 그 이후에도 LINE에서는 Letter Sealing을 더 많은 기능에 기본 적용하기 위해 많은 노력을 해왔습니다. 이 글을 통해 지금까지의 노력을 소개드리려고 합니다.

적용된 기능은?

1:1 대화에서 Letter Sealing이 기본으로 설정됩니다

안전한 메신저 대화를 위해 1:1 대화에서 Letter Sealing이 기본으로 설정되었습니다. 이전에는 원하는 사용자가 Letter Sealing 옵션을 켜는 opt-in 방식이었지만, 이제는 사용자가 opt-out 방식으로 끄지 않으면 Letter Sealing이 기본으로 켜진 상태가 됩니다.

Channel Gateway에 CircuitBreaker 적용

들어가기에 앞서

Circuit Breaker에 대한 소개 블로그를 읽지 않았다면 먼저 읽어보시길 권장합니다.

Channel Gateway에 CircuitBreaker 적용하기

Channel Gateway 서버에서는 LINE의 다양한 서버들의 기능을 CP(Contents Provider)들에게 제공하는 역할을 맡고 있습니다. 그러다보니 Channel Gateway 서버들은 연결된 서버들에 영향을 많이 받게 됩니다. 그리고, 그러한 영향들은 쉽게 전체 Channel Gateway 서버들에게 전파됩니다.

분산 서비스 환경에 대한 Circuit Breaker 적용

LINE의 엔지니어 Ono입니다. 이번 블로그에서는 LINE의 서버에서 실제로 도입을 시작한 ‘Circuit Breaker’라는 시스템에 대해 소개하겠습니다.

Circuit Breaker란?

LINE을 비롯한 최근의 Web 및 App의 백엔드 서버 시스템은 여러 개의 서비스가 API나 RPC로 연결된 네트워크로 구성되어 있습니다. 만약 이 네트워크 중 하나가 갑자기 전혀 응답하지 않게 되는 상황이 발생하면 어떻게 될까요? 동작하지 않는 서비스 접속 시 타임아웃될 때까지 차단되어, 의존성이 있는 서비스까지 연쇄적으로 멈출 가능성이 있습니다. 만약 네트워크 전체를 파악하고 있는 사람이 아무도 없다면, 근본적인 원인이 어느 서비스에 있는지를 알아내기까지 시간이 걸리게 됩니다.

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에서 발표한 슬라이드 자료를 참고 바랍니다.

더 안전한 대화를 위한 Letter Sealing

안녕하세요. LINE의 보안 관련 업무를 담당하고 있는 원종일입니다. 이번 글에서는 스마트폰 사용자들이 모바일 메신저를 선택할 때 중요하게 생각하고 있는 메시지 보안, 그 중에서도 네트워크를 통한 안전한 메시지 송수신 시 고려해야 할 문제와 이를 해결하기 위해 LINE 5.3에 추가된 Letter Sealing 기능에 대해서 설명하고자 합니다.

메시지를 안전하게 전달하기

오랜 옛날부터 비밀 정보를 전달하는 일은 항상 존재해왔고 또한 중요한 것이었습니다. 사람들은 인적이 드문 곳에 숨어서 비밀 이야기를 하거나 자신들만의 은어(隱語)를 만들어 다른 사람들이 이해하지 못하게 하여 자신들의 대화를 숨겨왔습니다.

하지만 이러한 방식들은 상대방이 가까운 곳에 있을 때만 사용할 수 있는 방법이었습니다. 현대의 인터넷과 같은 장거리 간의 통신이 없었던 옛날에는 종이와 같은 매체에 적은 문서를 봉투에 넣어 사람이 직접 전달하는 것 외에는 방법이 없었습니다. 하지만 사람이 전달하는 과정에서도 봉투를 몰래 개봉해 비밀을 확인하고 다시 봉투를 봉합하여 그대로 전달하는 문제가 있었습니다. 때로는 문서의 내용을 수정, 조작하여 내용을 왜곡해 전달하더라도 확인할 방법이 없었습니다. 따라서 처음에 작성한 내용을 전달자로부터 안전하게 전달하는 것은 어려움이 많았습니다.

True Delete

LINE에서 애플리케이션 보안을 담당하고 있는 안상환입니다. 이번 포스팅에서는 스마트폰을 잃어버리는 경우에 사용자가 삭제한 대화 기록이 어떻게 유출될 수 있는지, 그리고 이를 보호하기 위한 LINE의 새로운 기능인 ‘True Delete’에 대하여 이야기하고자 합니다.

많은 사람들은 스마트폰을 분실하거나, 때로는 다른 사람이 접근할 수 있는 환경에 스마트폰을 방치하곤 합니다. 만일 다른 사람이 나의 스마트폰을 습득할 경우, 스마트폰에 저장된 데이터에 접근해서 유출하는 것이 가능하기 때문에 상당히 심각한 문제가 발생할 수 있습니다. 스마트폰에는 통화기록, 메시지, 연락처, 캘린더, 인터넷 검색 기록, 이동경로, 사진, 메모 등 많은 개인정보가 저장되어 있기 때문에 개인의 사생활이 유출되는 문제가 발생할 수 있고, 회사 업무상 기밀 자료가 외부로 유출되는 문제도 발생할 수 있습니다. 심지어 이러한 정보를 얻기 위해서 고의로 스마트폰을 훔치는 경우도 있습니다. 편리한 생활 도구인 스마트폰이 관리 부주의나 순간적인 방심으로 인해, 개인의 프라이버시를 침해할 수 있는 위험한 도구가 될 수도 있습니다.

LINE에서는 이러한 위험으로부터 사용자 프라이버시를 보호하기 위해 비밀번호 잠금, 데이터 암호화, 타이머챗과 같은 기능을 추가하는 등 다양한 노력을 하고 있습니다. 하지만 몇 가지 문제때문에 일부 위험은 여전히 존재하고 있습니다. ‘삭제’라는 보편적인 프로그램 기법의 한계때문에 삭제된 데이터를 복구할 수 있는 것도 한 가지 문제입니다. 이번 블로그에서는 일반적인 삭제 방식의 문제점과 이를 보완하기 위해 LINE에서 개발한 ‘True Delete’ 기능을 소개하고자 합니다.

다자간 통화 서비스 Popcorn Buzz의 통화 품질 올리기

LINE에서 Mobile VoIP 개발을 담당하고 있는 강인규(IG), 곽정남(JN)입니다.
이번 블로그에서는 새롭게 런칭된 팝콘 버즈(Popcorn Buzz)의 통화 품질 향상 방법에 대해 이야기하고자 합니다.

소개

팝콘 버즈(Popcorn Buzz)는 인터넷을 통해 동시에 200명까지 통화할 수 있는 그룹 콜 서비스입니다. 아래 그림과 같이 팝콘 버즈(Popcorn Buzz)의 사용자들은 인터넷을 통해 가상의 공간에 함께 모여서 대화나 회의를 할 수 있습니다.

글자수를 세는 7가지 방법

안녕하세요. 라인플러스 개발실에서 일하고 있는 박상진입니다.

이 블로그에서는 글자 수를 세는 방법에 대해서 얘기해보고자 합니다. 라인 서비스에서는 프로필이름, 그룹이름, 상태메시지 등 여러 곳에서 글자 수를 세게 되는데요. 글이 화면에 부족하거나 넘치지 않게 하고, 스토리지 용량을 정확하게 할당하기 위해서는 글자 수를 정확히 세는 것은 중요한 일입니다. 특히 라인은 전세계에서 사용하는 서비스인만큼 다른 언어들의 글자 수도 정확히 셀 수 있어야 합니다. 어느 날 BTS(Bug Tracking System)의 프로필 이름에 emoji를 입력하면 1자가 2자로 표시되는, 글자 수가 정확히 카운트되지 않는다는 이슈가 올라왔습니다. emoji란 일본에서 처음 쓰이기 시작한 것으로 지금은 Unicode 표준에 포함되어 세계적으로 널리 쓰이고 있는 그림문자 세트인데요. 처음에는 단순히 Surrogate를 제대로 카운트하지 못하는 문제라고 짐작하고 분석을 시작했습니다. Surrogate란 쉽게 이야기해서 UTF-16 인코딩을 16 비트 이상으로 확장해 주는 문자세트인데, emoji 중에는 Surrogate를 통해 표현되는 문자들이 있기 때문입니다.