LINE Engineering
Blog

  • 따로 놀던 슬랙봇, gRPC 통해 하나 되기
    Suzuki Shunsuke 2018.09.18

    안녕하세요? LINE IT 전략실에서 사내 시스템의 개발 및 운영을 담당하고 있는 suzuki-shunsuke입니다. 오늘은 얼마 전 grpc를 이용해 여러 개의 슬랙봇(Slack Bot)을 하나로 통합했던 이야기를 해볼까 합니다.

    배경

    저는 사내 Slack을 관리하는 팀에서 슬랙봇을 개발하고 운영도 하고 있습니다. 어느 날 '봇을 하나로 합쳐줬으면 좋겠다'는 요청이 있었습니다. 다음과 같은 이유 때문이었습니다.

    • 대화창에 여러 봇을 초대하기 번거롭다.
    • 어떤 봇들이 있는지 다 알 수 없다
    • 여러 봇을 자꾸 추가하는 것보다는 하나의 봇에 기능을 추가하는 편이 사용자 입장에서 봇에 더 애착이 간다.

    slack grpc Slack Bot summer homework

    더보기

  • Kotlin으로 서버사이드 개발과 Clova Skill Award 도전!
    Hokuto Kagaya / Akira Iwaya 2018.09.12

    Hokuto Kagaya: 2016년 입사. LINE GAME 플랫폼 팀에서 서버 개발을 담당하고 있습니다. / Akira Iwaya: LINE LIVE 안드로이드 앱 개발 담당. 취미로는 리마인군이라는 BOT을 만들고 있습니다.

    LINE Engineering Blog를 찾아주신 여러분, 안녕하세요? 오늘은 두 명이 공동으로 작성한 포스팅입니다. 저희 소개 먼저 드리겠습니다. LINE에서 게임 플랫폼 개발을 맡고 있는 Kagaya와 동영상 생중계 서비스 LINE LIVE의 Android 앱 개발을 맡고 있는 Akira입니다.

    이번 포스팅에서는 아래 두 가지 이야기를 통해 서버사이드 Kotlin에 관한 노하우와 유스케이스를 공유할까 합니다.

    1. Kagaya가 담당하는 LINE GAME 플랫폼의 Kotlin 이용 현황 이야기
    2. 'LINE 사내 Clova Skill Award'에 저희 둘이 팀으로 참가해서 Kotlin으로 영광의(?) 최우수상을 수상한 이야기

    Kotlin summer homework Android

    더보기

  • HTML 같이 레이아웃을 자유롭게 변경할 수 있는 새로운 메시지 유형, 'Flex Message'를 소개합니다
    Kazuki Nakajima 2018.09.05

    Flex Message라는 새로운 메시지 유형이 LINE Messaging API에 추가되었습니다. 기존 Messaging API에서도 단순 텍스트 외에 스티커나 이미지, 비디오 같은 미디어 유형, 혹은 다양한 버튼과 URL을 배치할 수 있는 템플릿 유형의 메시지를 사용할 수 있었습니다. 그 중에서도 템플릿은 사용자가 여러 가지 선택지 중에서 답을 골라야 하는 상황에 특히 유용했습니다. 다만, 버튼 템플릿 같은 경우 버튼을 최대 네 개까지만 배치할 수 있다든가, 레이아웃을 제목, 본문, 버튼 순으로만 설정할 수 있다는 제약이 있었습니다.

    Flex Message 란?

    Flex Message는 바로 이런 제약에서 벗어나 레이아웃을 굉장히 자유롭게 바꿀 수 있는 메시지 유형으로, 변경 가능한 가짓수가 무한대에 가깝습니다. 일정한 디스플레이 프레임이 있으면서도 레이아웃을 HTML처럼 원하는 대로 변경할 수 있고, 각각의 구성 요소도 보기 좋게 정돈되어 나타납니다. 예를 들어, 아래와 같은 메시지를 작성할 수 있습니다.

    LINE BOT Messaging API

    더보기

  • Go 언어의 GC에 대해
    Haruki Okada 2018.08.29

    안녕하세요, LINE Ads Platform 개발을 담당하고 있는 Okada(@ocadaruma)입니다. 이번 포스팅에서는 개인적으로 쭉 관심있었던 Go 언어의 가비지 컬렉션(Garbage Collection, GC)에 대해 조사한 내용을 소개하겠습니다.

    Go 언어

    Go 언어는 Google에서 개발한 시스템 프로그래밍 언어입니다. Channel을 통해 동시성(concurrency)을 지원하고 GC를 제공한다는 점이 특징입니다. Google을 비롯한 많은 기업에서 사용하고 있으며, LINE에서도 Go로 개발하는 도구나 서비스가 많이 있습니다.

    Go 언어의 GC

    Go 언어를 사용하면 low-latency 애플리케이션을 쉽게 개발할 수 있습니다. 하지만 솔직히 GC는 다른 언어의 runtime GC에 비해 단순해 보입니다. 예를 들어 Go 언어(Go 1.10 기준)의 GC는 Concurrent Mark & Sweep(이하 CMS라 함) 컬렉터이고, JVM(Java Virtual Machine) 등에서 수행하는 일반적인 압축(compaction)이나 세대별 GC(Generational GC)를 수행하지 않습니다.

    It is a concurrent mark and sweep that uses a write barrier. It is non-generational and non-compacting. – mgc.go 발췌

    Go summer homework

    더보기

  • OpenStack Summit Vancouver 2018 참관 후기(하)
    Yuki Nishiwaki 2018.08.28

    LINE에서 OpenStack을 비롯한 프라이빗 클라우드를 운영, 개발하고 있습니다.

    안녕하세요? LINE Verda 2팀의 Nishiwaki입니다. 지난 포스팅에서는 청중 입장에서 흥미로웠던 컨테이너 관련 세션 몇 가지를 소개드렸는데, 이번 글에서는 'Excitingly simple multi-path OpenStack networking: LAG-less, L2-less, yet fully redundant' 라는 제목으로 저와 Samir가 발표한 내용을 소개해 드리겠습니다.

    LINE에서는 새로운 리전(region)을 대상으로 East-West 네트워크 트래픽(데이터센터 내 트래픽)에 강한 데이터센터 네트워크를 설계하고 있습니다. 저희는 발표에서 이 아키텍처 및 설계와 관련된 Neutron 통합에 관해 얘기했습니다. 발표 영상과 자료는 아래에서 보실 수 있습니다.

    Openstack

    더보기