Category Archives: Back-End

Armeria로 Reactive Streams와 놀자! – 2

안녕하세요. LINE+에서 오픈소스 Armeria와 Central Dogma를 개발하고 있는 엄익훈입니다. 지난 포스팅에선 Reactive Streams의 개념을 살펴보았는데요. 이번 포스팅에선 Reactive Streams를 오픈 소스 비동기 HTTP/2, RPC, REST 클라이언트/서버 라이브러리인 Armeria에서 사용하는 방법에 대해 공유하려고 합니다.

Armeria로 Reactive Streams와 놀자! – 1

LINE+에서 오픈소스 Armeria와 Central Dogma를 개발하고 있는 엄익훈입니다. 저는 Reactive Streams의 개념과, Reactive Streams를 오픈 소스 비동기 HTTP/2, RPC, REST 클라이언트/서버 라이브러리인 Armeria에서 사용하는 방법에 대해 공유하려고 하는데요. 이번 포스팅에선 먼저 Reactive Streams의 개념을 알아보겠습니다.

서버 사이드 테스트 자동화 여정 – 3. Docker를 활용한 통합 테스트 환경 개선

2편에서 소개한 Docker 기반의 통합 테스트를 이용하여 PR 단위 회귀 테스트를 수행할 수 있게 되면서 적은 테스트 비용으로도 안정적으로 서비스를 개발할 수 있게 되었습니다. 하지만 Docker의 기술적 특성 때문에 발생하는 문제들이 있었습니다. 이번 글에서는 Docker의 기술적 특성 때문에 발생했던 여러 문제를 해결하는 과정을 소개하고, 문제를 해결하기 위해 구축했던 인프라 환경을 활용하여 시스템을 추가적으로 개선했던 사례를 소개하고자 합니다.

서버 사이드 테스트 자동화 여정 – 2. 통합 테스트 수준의 회귀 테스트 환경 구축 및 Docker 활용

1편에서는 테스트 자동화를 시작하게 된 계기와 어떤 테스트 자동화 작업을 진행했는지 알아보았습니다. 이번 글에서는 LINE 미디어 플랫폼 조직에서 안정적인 서비스 개발과 운영을 위한 테스트 자동화 환경에 Docker를 활용한 사례를 소개하겠습니다.

서버 사이드 테스트 자동화 여정 – 1. 테스트 자동화를 시작한 계기와 그 첫 발걸음

안녕하세요. LINE 미디어 플랫폼 개발과 운영 업무를 담당하고 있는 하태호입니다. 미디어 플랫폼은 LINE 메시징 서비스 및 LINE의 다양한 패밀리 서비스에서 생성되고 유통되는 미디어 콘텐츠(이미지, 비디오, 오디오, 라이브 스트림 등)를 각 서비스 요구 사항에 맞추어서 가공하고 저장한 뒤 사용자에게 전달하는 역할을 합니다. 미디어 플랫폼은 LINE 내 수많은 서비스가 사용하는 플랫폼이기 때문에 장애가 발생하면 전체 LINE 서비스 생태계의 품질에 영향을 미칩니다. 따라서 미디어 플랫폼을 구성하는 서버 모듈은 언제나 높은 수준의 서비스 안정성을 보장해야 하는 미션을 가지고 있습니다. 이 미션을 달성하기 위해서 미디어 플랫폼 조직은 코드 리뷰, 테스트 자동화, 기술 스터디, 테크 토크, 장애 회고 등의 다양한 방법을 사용하고 있는데요. 이번 글에서는 미디어 플랫폼 조직이 서비스 안정성을 높이기 위해 어떻게 테스트를 자동화하고 개선해 왔는지 살펴보도록 하겠습니다.

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

지난 1편에서 저희가 LINE iOS 공유 기능 모듈을 개발하면서 겪었던 어려움과 이를 해결해나간 방법을 아래 여섯 가지로 나눈 뒤 그중 앞선 두 가지를 먼저 말씀드렸는데요.

이번 글에서 나머지 네 가지를 말씀드리며 공유 모듈을 사용하는 LINE 내 여러 서비스의 다양한 요구 사항을 만족하면서 유지 보수가 편하고 확장 가능한 구조로 구현하기 위해 저희가 어떤 고민을 했는지 이야기하겠습니다.

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

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

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

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

Antman 프로젝트 개발기

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

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

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

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

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