LINE 메신저 앱 공유 모듈 통합 개발기 – 1

안녕하세요. LINE iOS 클라이언트 개발을 담당하고 있는 조현지, 이건홍입니다. 이번 글에선 LINE iOS 공유 기능 모듈을 개발하면서 겪었던 어려움과 이를 해결해나간 방법에 대해서 이야기하려고 합니다.

코드 가독성에 대해 – 3. 상태와 절차

안녕하세요. 커뮤니케이션 앱 LINE의 Android 클라이언트 팀 Ishikawa입니다. 이 글은 ‘코드 가독성에 관한 프레젠테이션’을 소개하는 비정기 연재 블로그의 세 번째 편입니다(지난 글은 여기(1편, 2편)를 참고하세요). 이번 글은 특정 유형에 한정된 이야기로, 4장 ‘상태(state)’와 5장 ‘절차(procedure)’에 관해 설명하겠습니다.

하드웨어 비디오 코덱과 소프트웨어 비디오 코덱의 하이브리드!

LINE 영상 통화의 품질을 책임지는 VoIP 플랫폼 개발팀에서는 그룹 통화 리팩토링 및 품질 개선 프로젝트인 ‘Constella 프로젝트’를 진행하면서, 스케일러블(scalable) 영상 코딩(다양한 해상도를 하나의 데이터 스트림으로 코딩하는 기법)을 구현해야 했는데요. 소프트웨어 코덱으로는 필요한 만큼 성능이 나오지 않고, 하드웨어 코덱은 스케일러블 영상 코딩을 지원하지 않아서 난관에 부딪혔습니다. 그래서 스케일러블 영상 코딩을 위해 두 코덱의 장점을 살린 새로운 코딩 시스템을 개발하기로 결정했습니다.

Antman 프로젝트 개발기

사진과 동영상 같은, LINE의 모든 미디어 데이터는 LINE 미디어 플랫폼에서 운영하는 OBS(Object Storage)라는 미디어 스토리지에서 관리합니다. OBS는 LINE과 LINE의 모든 패밀리 서비스에서 사용하는 미디어 데이터를 관리하며, 총 100 PB(petabyte) 정도의 스토리지를 사용합니다. 그중, 30 PB 정도를 차지하는 것이 바로 이 LINE 앨범 서비스입니다. 모든 데이터가 서버에 저장되어야 하다 보니, 순수하게 스토리지 서버 비용만 따져봐도 무시할 수 없는 수준의 금액이 지출되고 있습니다.

돈도 돈이지만 가장 큰 문제는 데이터 센터의 서버 상면(서버 공간을 임차하는 것)입니다. 서비스가 활성화되는 것은 분명 기뻐할 일입니다. 하지만 영구저장 정책이 적용된 서비스는 서비스 초기부터 쌓여가는 모든 데이터를 서버에 저장해야 하고, 분명히 어느 시점에는 그 한계에 봉착할 수밖에 없습니다. 비유를 하자면, 인구가 점점 늘어나 결국 집이 부족해지는 상황이라고 할까요?

DroidCon2019 Vienna 방문 후기

Android 개발자에게 가장 유명한 개발자 콘퍼런스로는 Google에서 직접 주최하는 ‘Google I/O’와 ‘Android Dev Summit’을 꼽을 수 있습니다. 또한 전 세계에 퍼져 있는 글로벌 개발자 그룹인 ‘Google Developer Groups (GDG)’를 기반으로 열리는 콘퍼런스도 있고, 또 독자적으로 각 지역에서 열리는 Android 개발자 콘퍼런스도 있는데요. 그중에서도 ‘DroidCon’은 전 세계에서 가장 큰 Android 개발자 콘퍼런스 네트워크로 알려져 있습니다. 2009년 ‘DroidCon Berlin’을 시작으로 주로 유럽에서 열리다가 현재는 유럽을 넘어 중동, 아프리카, 북미에 걸친 22개 도시에서 매해 열리고 있는데요. 저는 이번에 오스트리아 빈에서 열린 DroidCon2019 Vienna에 다녀왔습니다. 지금까지는 주로 아시아나 북미에서 열린 개발자 콘퍼런스에 참가했었는데요. 이번에 처음으로 유럽의 개발자들을 현지에서 만나볼 수 있게 되어 많은 기대를 했습니다.

이번 DroidCon Vienna에선 많은 발표가 ‘Kotlin’, ‘테스트’, ‘빌드’와 관련된 주제였습니다.

코드 가독성에 대해 – 2. 명명과 주석

안녕하세요. 커뮤니케이션 앱 LINE의 Android 클라이언트 팀 Ishikawa입니다. 이 글은 코드 가독성에 대한 프레젠테이션을 소개하는 비정기 연재 블로그의 두 번째 편입니다(첫 번째 편을 먼저 읽고 오시면 좋습니다). 이번 글에서는 프로그램 내에 작성하는 자연어에 관한 내용인 2장 ‘명명’과 3장 ‘주석’에 대해 설명하겠습니다.

생애 첫 오픈 소스 기여 경험(feat. Armeria)

이번 글은 LINE에서 진행됐던 Armeria Sprint 참가 후기입니다. ‘짧은’ 스프린트를 거친 뒤 ‘긴’ 리뷰 과정을 거치며 하나의 기능을 완성하고 결국 릴리스까지 이뤄낸, 길고 험난(?)했던 오픈 소스 기여 경험을 공유하려고 합니다.

LINE의 인프라 비용을 절감한 6가지 사례

안녕하세요, LINE에서 미디어 플랫폼의 개발과 운영을 담당하고 있는 박동진입니다. 미디어 플랫폼은 LINE 내에서 유통되는 콘텐츠(이미지, 비디오, 라이브 스트림 등을 포함한)를 각 서비스 요구 사항에 맞춰서 가공하고 저장한 뒤 사용자에게 전달하는 역할을 하는데요. 이런 역할을 하기 위해서 LINE 서비스에서 발생하는 막대한 트래픽을 처리하고 있습니다. 덕분에 서버와 전용 회선, 스토리지, CDN 등 LINE의 인프라 비용을 산정할 때 미디어 플랫폼이 늘 1순위로 고려 대상이 되었습니다(한때 ‘장비 깡패’라는 별명이 있었을 정도로 규모가 크기도 합니다).

따라서 LINE 각 서비스의 기능 지원은 물론비용 효율적이면서 사용자 경험을 해치지 않도록 빠르게 전달하는 역할을 하는 것이 저희 팀의 미션이라고 볼 수 있습니다. 이 미션을 어떻게 달성했는지 몇 가지 사례를 통해 살펴보도록 하겠습니다.

LINE Free Call에 iOS 다크 모드 적용하기

사용자가 다크 모드를 선택하면 Apple에서 제공하는 기본 앱은 자동으로 색상이 변경되지만, 서드 파티 앱에서는 다크 모드를 지원하기 위해 추가적인 작업을 해주어야만 합니다. 이번 글에서는 LINE Free Call에서 다크 모드를 지원하기 위해 했던 작업과 소소한 팁에 대해 소개해드리고자 합니다.

데이터 기반으로 지속적인 CI/CD 개선 환경 만들기

저는 올해 6월에 LINE에 입사해 LINE 메신저 클라이언트와 관련된 CI(Continuous Integration)/CD(Continuous Delivery) 업무를 지속적으로 개선하고 자동화하는 DevOps 역할을 수행하고 있습니다. 이번 글에서는 지속적인 CI/CD 개선을 위해 데이터를 시각화하고 활용해 나간 경험을 공유하려고 합니다.