Elastic{ON} 2017 참가 후기

시작하기 전에

안녕하세요. LINE에서 모니터링 시스템을 개발을 담당하고 있는 software engineer 이재진입니다. 이번 블로그에서는 LINE의 후원으로 Elastic{ON} 2017을 다녀온 후기를 소개하고자 합니다. LINE에서는 개발자가 컨퍼런스에 참여할 수 있도록 적극적인 지원을 아끼지 않고 있습니다. Elastic{ON} 2017 컨퍼런스의 현장 분위기를 사진과 함께 소개하고 제가 관심 있게 들었던 세션에 대해 간단하게 설명을 추가했습니다.

Elastic{ON} 2017 소개

현장 분위기 소개

Elastic{ON} 2017 컨퍼런스는 2017년 3월 7일부터 3월 9일까지 미국 San Francisco의 Pier 48에서 개최되었습니다. AT&T 야구 경기장 근처에 위치한 부둣가의 창고 같은 건물에서 컨퍼런스가 진행되었습니다. 전 세계에서 약 2,000명 이상이 참석한 비교적 큰 규모의 컨퍼런스였습니다.
Elastic Stack, 그 중에서도 특히 Elasticsearch와 Kibana는 LINE에서도 여러 목적으로 많이 사용하고 있습니다. 제가 개발하는 모니터링 시스템에서도 event를 저장하거나 분석, 시각화하는 용도로 Elastic Stack을 사용하고 있습니다. 예전에는 단순히 event를 수집만 하고, 분석이나 시각화하는 기능은 없었지만 Elastic Stack 덕분에 생각보다 쉽게 해당 기능들을 구현할 수 있었습니다(Thanks Elastic!). 그렇지만 운영하는 과정에서 해결이 쉽지 않았던 문제들도 경험을 했었고, 곧 Elastic Stack 5.x 기반으로 업그레이드할 예정이기 때문에, 다른 사용자들의 경험담이나 해결책, 새로 추가되는 기능들에 대해서 듣고 효과적으로 적용하는 방법을 찾고자 참가하게 되었습니다.

우선 행사장의 다양한 모습을 간단하게 전해드리겠습니다.
먼저 행사장에 도착해서 참석증을 받았습니다. 행사장은 생각보다 컸습니다. 행사장 내에는 발표가 진행되는 홀과 AMA(Ask Me Anything) 코너, 다른 기업의 홍보 부스, 그리고 Elastic 제품군을 간접적으로 체험해보는 부스 등이 있었습니다.

행사에 대한 전반적인 안내는 Elastic에서 자체 제공하는 App을 통해서 쉽게 확인할 수 있었고, 알림도 받을 수 있었습니다. App에서는 Agenda table을 확인하며 자신이 들을 세션을 미리 지정할 수 있었고, 식사 메뉴라든가 기타 여러 가지 정보들을 확인할 수 있었습니다. 또한 timeline처럼 참석자들이 자유롭게 사진이나 글을 올려서 서로 공유할 수도 있었습니다. App을 통해서 여러 가지 정보를 제공해주었기 때문에 이 부분은 무척 편리했습니다.

Elastic{ON} 2017에 참석하기 전부터 동료들로부터 티셔츠를 챙겨달라는 부탁을 받았는데 아쉽게도 정책상 1인당 1개의 티셔츠만 받을 수 있었습니다(동료분들, 죄송합니다). 티셔츠는 그냥 받는 것이 아니라 개인이 선택한 문양을 티셔츠에 인쇄해주는 시스템이라 재미있었습니다. 인쇄는 Elastic Staff분이 직접 해주셨는데 작업을 해주시면서 제가 LINE에 다니는 것을 보고 일본인 친구가 있는데 그 친구랑은 LINE으로 소통한다며 “Very good product!”라고 칭찬해주셔서 저도 왠지 뿌듯했습니다.

행사장은 Elastic에서 공식 지정한 호텔과 차로 약 20~30분 정도의 거리에 있었기 때문에 셔틀 버스를 정기적으로 운행해서 참석자들이 편하게 왕복할 수 있도록 지원해주었습니다. 또한 곧 소개해드릴 수요일 밤의 파티 장소도 역시 이 셔틀 버스를 타고 이동했습니다.

수요일 밤에는 Elastic{ON} 2017 참석자들을 위한 파티가 California Academy of Sciences에서 진행되었습니다. 그냥 단순한 파티라고 생각했는데, 이곳에서도 역시 술과 식사가 잔뜩 제공되었고, 행사 장소 자체가 볼거리가 무척 많았습니다. 심지어 살아 있는 흰색 악어가 움직이는 홀도 있었는데 매우 재미있었습니다. 또한 수족관과 신기한 광물들도 전시되어 있어서 파티에 잘 어울리기 힘든 내성적인 사람들도 주변을 구경하며 즐겁게 보낼 수 있었습니다.

Elastic{ON} 2017 행사장은 전반적으로 풍부한 먹거리와 참석자들이 쉴 수 있는 공간을 만들어주어서 좋았다고 생각합니다. 다만 몇 가지 아쉬운 부분들이 있었습니다. 세션이 진행되는 홀이 방음이 되지 않아서 밖에서 들리는 소음으로 발표자의 음성이 듣기 힘든 경우가 많았습니다. 또한 행사장이 좀 추웠습니다. 가뜩이나 제가 San Francisco에 도착하자마자 감기가 걸려 있던 상태라서, 더 춥게 느껴졌습니다. 수요일 밤의 파티는 너무나 근사하고 환상적이었지만, 호텔에서 거리가 멀었기 때문에 반드시 셔틀버스를 이용해야 했는데 셔틀버스의 줄이 너무 길어서 버스를 타기 위해 오랫동안 기다려야했습니다. 이런 아쉬운 부분들은 다음 Elastic{ON} 2018에서는 개선되기를 희망합니다.

세션 소개

Elastic{ON} 2017에서는 다양한 주제의 세션들이 준비되어 있었고, 그 중에서 몇 가지 제가 참석하고 유익했던 세션들을 간단하게 전하고자 합니다.

맨 처음 Opening Keynote의 시작 직전에 갑자기 발레리나가 나와서 춤을 추기 시작했습니다. 마치 Elastic Stack의 제품군 중의 하나인 Beats와 그에 대한 시각화를 강조하듯 발레리나 움직임에 맞추어 비트가 그래프로 그려지는 모습은 상당히 인상적이었습니다. 그렇게 Elastic{ON} 2017은 시작되었습니다.

Opening Keynote

Elasticsearch의 창시자이자 지금은 Elastic의 CTO인 Shay Banon이 직접 발표한 세션입니다. 초반부는 Elastic Stack이 널리 사용되고 있음을 수치와 차트로 소개하고, 그 이후는 Elastic Stack에서 새로 선보일 기술들에 대한 간략한 소개가 주를 이루었습니다. 초반부에 인상 깊었던 것은 Elastic Stack을 릴리스할 때마다 모든 제품들의 버전을 통일하여 릴리스하고 있다는 설명이었습니다. 사실 저도 개발을 하고 지속적인 버전 업그레이드 릴리스를 하고 있지만, 연관된 모든 제품들을 동일한 버전으로 맞추고 릴리스하는 것은 생각보다 쉽지 않습니다. 그런 부분들을 잘 지키며 릴리스한다는 것은 결국 그만큼 모든 제품들에 대한 관리가 지속적으로 잘 유지 관리되고 있다고 생각되어서 인상 깊었습니다. 후반부에서는 새로운 기능들을 간략하게 소개했습니다. 각각의 새로운 기능에 대해서는 보다 자세히 소개하는 세션들이 따로 있기 때문에 관심 있는 주제에 대해서는 맨 아래에 전체 세션에 대한 URL 링크가 있으므로 참고하시길 바랍니다. 개인적으로 만약 내가 개발한 제품이 어느덧 수 많은 부가 제품군들로 이루어진 Stack이 되고, 제품 하나하나가 계속 발전 중이며 훌륭한 제품임을 수천 명이 모인 자리에서 소개하고 있다면 스스로 얼마나 자랑스럽고 뿌듯할지 문득 생각해봤을 때, Shay Banon은 그 순간 아마 지구에서 가장 행복하지 않았을까 생각합니다. 끝부분에는 Elastic Cause Awards라고 하여 Elastic Stack을 이용하여 현실의 사회 문제를 해결하고 있는 단체들의 수상 시간도 있었습니다. 수상한 Project에 Elastic Stack이 어떻게 적용되었는지는 Closing Keynote에서 소개하고 있습니다.

What’s Evolving in Elasticsearch?

Elasticsearch가 5.x가 되면서 변경된 부분들과 6.0에서는 어떤 부분들이 새로 추가될 예정인지 소개하는 세션이었습니다. 상당히 많은 변경점들이 소개되었습니다.

  • 먼저 5.x가 출시되면서 개선된 부분들에 대한 소개가 있었습니다. 기존엔 cluster 상태가 RED인 경우, 자세히 알기 위해서 다양한 REST API를 사용하여 상태를 체크해야 했었고 사실 많이 불편했습니다. 하지만 이제는 /_cluster/allocation/explain이라는 API 하나로 상태를 알 수 있게 된다고 소개하고 있습니다.
  • 향후에는 tribe node가 사라진다고 합니다(아래에 소개할 Blizzard 세션에서 tribe node에 대한 문제점을 이야기하고 있습니다).
  • Cross cluster search도 소개하고 있습니다. 이를 통해 앞으로 Kibana 등에서 다수의 cluster에서 검색이 가능해지기 떄문에 매우 흥미로운 기능이었습니다. 그리고 Elasticsearch를 운영하면서 다소 번거로운 부분은 major upgrade에서 반드시 cluster 전체를 재기동해야 하는 것입니다.
  • 6.0부터는 5.x에서 6.0으로 rolling upgrade가 지원된다고 합니다. 이것은 당시 홀에서 다들 환호성을 지를 정도로 매우 기쁜 소식이었습니다. 그 이유는 major upgrade에서는 cluster 전체를 재기동해야 하며 적어도 그 순간 만큼은 Elasticsearch를 이용할 수 없는 상태가 되기 때문에 서비스에 치명적인 영향을 미치는데, 이제는 rolling upgrade를 통해 서비스를 유지하면서 upgrade가 가능할 것 같습니다.
  • 5.x cluster와 6.0 cluster 간에 서로 검색이 가능해진다고 합니다.

기존에는 버전에 민감했던 부분들이 점차 해소되면서 운영 및 사용에 더욱 편리한 Elasticsearch로 진화하고 있었습니다(기존엔 Java client 버전도 가능한 한 동일한 버전으로 사용해야 했습니다). 그 밖에도 수 많은 변경점들에 대해서 소개를 하고 있기 때문에, Elasticsearch에 관심이 있다면 꼭 한번 보시길 추천해드립니다.

What’s Cookin’ in Kibana

Kibana의 현재와 앞으로의 로드맵에 대해서 소개하는 세션입니다. Kibana는 매우 강력한 시각화 도구이며, 개인적으로 Elastic Stack에서 가장 좋은 제품 중 하나라고 생각합니다. 앞부분은 5.0에서 새로 추가된 기능들인 tag cloud, heat map, search profiler UI와 향상된 성능 등에 대해서 소개하고 그 다음으로 로드맵에 대한 소개가 있었습니다. 그 중에 몇 가지만 간단히 소개해드리겠습니다.

  • Log event context: 이 기능은 예를 들어 하나의 error 이벤트가 발생했을 때, 해당 error event 전후에 어떤 event들이 발생했는지 보여주는 기능입니다. 이것은 장애 분석 시 유용하리라 생각되며, Loggly와 같은 서비스에서는 예전부터 지원되고 있었기 때문에 Kibana에도 꽤 오래 전부터 지원해달라는 요청이 많았습니다.
  • Query data를 CSV 파일 포맷으로 export: Kibana query data를 csv 파일 포맷으로 export하는 기능도 역시 오래 전부터 사용자들이 기다리던 기능이었으며, 곧 출시된다고 합니다(저 역시 오래 전부터 기다리던 기능이었습니다).
  • Time Series Visual Builder: Time series data에 특화된 시각화를 해주는 기능입니다. 이는 Metricbeat와도 관련이 있는 부분인데, Elastic에서 모니터링과 time series storage 분야에도 앞으로 더욱 적극적으로 지원할 예정임을 시사하고 있습니다. 그 밖에 Kibana 개발자들을 위한 이야기도 있었습니다. Kibana는 원래 Angular.js로 개발되었는데 앞으로 새로운 UI는 React로 개발되며 점차 React로 교체될 예정이라고 합니다.

What’s Brewing in Beats?

제가 담당하고 있는 모니터링 시스템도 Metricbeat와 매우 유사한 역할을 하는 agent를 자체 개발하여 통계를 수집하고 있습니다. 그래서 비교하며 들을 수 있었기에 더욱 흥미로웠던 세션입니다.

  • Metricbeat로 변경: 기존에 system metric만 수집하던 Topbeat가 Metricbeat로 변경되면서 Kafka, Docker 등 다양한 모듈들을 추가로 지원하는 Metricbeat로 변경되었음을 알려주었습니다.
  • Filebeats: Filebeats를 이용하여 Apache, nginx 등의 log를 쉽게 수집하고 시각화할 수 있었습니다.
  • Heartbeat: ping, HTTP request 등을 이용하여 uptime monitoring을 하는 Heartbeat도 소개했습니다.
  • Self monitoring: Beats 자체를 모니터링할 수 있도록 전송한 metric 수, CPU usage 등을 스스로 제공하고 그것을 모니터링하는 기능을 추가할 예정이며, 이를 위한 모니터링 UI도 추가될 예정이라고 합니다.

사실 제가 LINE에서 담당하고 있는 모니터링 시스템과 유사한 오픈 소스 중에서 요즘 가장 핫한 모니터링 시스템이 Prometheus라고 생각했는데, 이제는 Elastic을 모니터링 영역에서도 관심을 가지고 유심히 지켜봐야 할 것 같습니다. 참고로 이 세션은 Metricbeat를 이용해 Docker를 모니터링하는 것을 자세히 소개하고 있습니다. Metricbeat를 이용한 모니터링에 관심이 있다면 한번 보시길 추천해드립니다.

Building a Near Real-Time Pipeline for All Things Blizzard

저는 Blizzard사의 게임들을 참 좋아합니다. 그래서 주제와 상관없이 일단 들어보고 싶어서 참석한 세션입니다. 발표 슬라이드를 자사의 게임 캐릭터 등을 사용하여 재미있게 잘 만들었기 때문에 즐겁게 들을 수 있었습니다. 아마 요즈음 대부분의 회사에서는 각각의 서비스에서 발생하는 다양한 data들을 하나의 플랫폼으로 모아 분석을 하거나, 그런 플랫폼을 만드는 시도를 하고 있으리라 생각됩니다. Blizzard에서도 역시 비슷한 플랫폼을 구현하기 위해서 어떠한 노력들을 했는지 과거부터 미래 모습까지 잘 설명해주었습니다. 다양한 data들에 대한 schema를 어떻게 관리할 것인가에 대한 것과 더 많은 data를 수집하기 위해 시도한 경험담이 잘 소개되었습니다. 또한 node.js를 위한 고성능 Kafka client를 소개했는데, Node.js 환경에서 Kafka를 이용하고 있다면, 한번 사용해보시는 것도 좋을 것 같습니다. Elastic Stack에 대한 장단점을 경험을 통해 설명하고 있기 때문에 유익했고, LINE 사내에서도 data pipeline에 대한 고민이 있기 때문에 비교하며 재밌게 들었던 세션입니다.

Correlating Metrics and Logs

제가 LINE에서 주로 다루는 data가 metric과 log이기 때문에 참석한 세션입니다. 먼저 metric과 log에 대한 간단한 정의로 시작하였고, 결국 그 둘 다 “time series data”라고 결론을 내려서 흥미로웠습니다. 또한 그 두 종류의 data는 하나의 storage로 저장되고 하나의 UI로 표현되어야 한다고 설명했습니다. 사실 저도 제가 개발하는 모니터링 시스템에서 가능한 한 log도 metric chart로 표현하려고 고민을 하고 있었기에 재미있게 들었습니다. 사실상 이 세션은 홍보(?)용이라고 생각합니다. 대부분의 time series database들은 metric만 지원을 하고 있기 때문에 달리 생각하면 Elastic은 그와 차별된 좀 더 진보적인 time series storage가 될 수 있고 거기에 아주 근사한 시각화까지 쉽게 표현해줄 수 있다는 것, 더 나아가 Metricbeat나 Filebeat를 이용해 쉽게 metric과 log도 수집이 가능하다는 점을 소개했다고 생각합니다.

Machine Learning in the Elastic Stack

머신러닝(machine learning)은 요즘 가장 핫한 키워드 중 하나입니다. 작년 가을 즈음에 Elastic은 이상 데이터 감지 등의 솔루션이 있는 Prelert사를 인수하였습니다. 그리고 Prelert사의 머신러닝 노하우를 빠르게 Elastic Stack에 탑재하기 시작하였고, 그 결과로 머신러닝을 Elastic Stack에서 어떻게 적용 가능한지 demo를 통해 소개했습니다. 우선은 time series data로부터 이상 데이터 감지에 초점을 맞춘 기능으로 출시할 예정인 것 같습니다. 저도 time series를 다루고 있고 최근 사내 사용자들로부터 비슷한 요구가 급증하고 있어서 고민하고 있던 부분이었는데, Elastic Stack을 이용해서 쉽게 구현할 수 있을지도 모르기에 기쁜 소식이라고 생각합니다. 관련하여 어떻게 time series data에 대해 머신러닝을 하는지에 대한 심도 있는 내용은 이 링크에서 소개하고 있으므로 관심 있으시면 참고하시길 바랍니다.

Elasticsearch SQL

이 세션은 우리가 사용하는 Elasticsearch를 누구에게나 좀 더 친숙한 SQL을 통해 data를 취득할 수 있게 한다는 것이 주요 내용입니다. 게다가 JDBC 등을 통해서도 SQL 사용이 가능하다고 하니, Elasticsearch를 사용하기 위해 따로 query를 공부하지 않아도 되므로 익숙하지 않은 새로운 사용자, 혹은 기존 회사에서 Elasticsearch query를 배우기 싫어서 사용하지 않는 동료들을 설득할 좋은 기회라고 생각합니다(사실 저도 Elasticsearch query를 새로 만들 때마다 문서를 참조했던 것 같습니다). 아마 Elasticsearch를 사용하는 사용자들은 대부분 지원해주길 바랐던 기능이라고 생각합니다. 기본적인 함수뿐만 아니라 ‘GROUP BY’ 등의 aggregation query도 지원된다고 합니다. 참고로 보통 우리가 SQL이라고 하면 “Structured Query Language”를 의미하는데, 이 세션에서 소개된 Elastic SQL은 “Standard Query Language”입니다.

Elastic at Datadog

Datadog은 모니터링 서비스 회사입니다(개인적으로 logo가 너무 귀여워서 좋아하는 회사입니다). 지금 제가 하고 있는 일도 모니터링 시스템의 개발인만큼, 관심을 갖고 들었던 세션입니다. 짧은 세션이었기 때문에 많은 내용을 다루진 못했지만, Datadog에서 서비스되는 event에 대한 것과 어떻게 Elastic Stack을 적용하였는지에 대해서 소개하고 있습니다. Event 관리를 위해서 RDBMS에서 Elastic cluster로 이전하였다고 하는데 저 역시 비슷한 경험이 있어서 흥미로웠습니다. 확장성을 위해서 교체했으며 이후 더 나아진 성능에 대해서 간략하게 설명해주었습니다. 후반부는 어떻게 Elasticsearch를 모니터링하고 있는지 설명했는데, 좀 더 자세한 내용은 이 세션에서도 소개한 기사를 참고하시기 바랍니다.

Closing Keynote

마지막 세션으로 Opening Keynote에서 소개되었던 Elastic Cause Awards 프로젝트들을 소개하고, 이를 통해 Elastic도 역시 그런 부분에 기여하고 있으며 어떻게 Elastic Stack이 이런 프로젝트들에서 활용되고 있는지를 각 프로젝트의 담당자들이 직접 발표해주었습니다. 발표 중간에 “IST Research”의 Elastic Stack을 활용한 경험담에서, Elasticsearch에서 하나의 노드를 master node와 data node를 겸용하여 사용했다가 분리하여 더욱 더 smart한 환경으로 개선했다는 이야기가 나옵니다. 재미있는 것은 비슷한 경험담이 Cisco에서도 있었다는 것입니다(사실은 저도 그랬습니다…). Cisco에서 Commerce Platform을 Elastic Stack을 이용하여 구현한 것을 소개한 세션입니다. 이 세션도 관심 있으시면 한번 보시기 바랍니다. 그리고 Elastic 창립자들과의 Q&A로 Elastic{ON} 2017은 마무리되었습니다.

그 밖에도 좋은 주제의 세션들이 많습니다. 다른 세션들에 대해서 자세히 보고 싶으시면 아래의 URL을 통해서 확인하실 수 있습니다.
https://www.elastic.co/elasticon/conf/2017/sf

마치며

Elastic{ON} 2017은 Elastic Stack 환경에서 개발하거나 운영하는 엔지니어에게 큰 도움이 되는 컨퍼런스라고 생각합니다. Elastic Stack에서 새로 제공되는 기능들과 다른 사용자들의 경험담은 제가 많은 것을 배우는 데 도움을 주었습니다. 제가 처음 Elasticsearch를 접했던 것은 2011년입니다. 검색엔진 혹은 Splunk 등 유료 소프트웨어의 대안으로만 인식되던 과거에 비해 지금은 모니터링 및 머신러닝까지 지원하는 다양한 환경에서 사용 가능한 훌륭한 Stack을 갖춘 제품이 된 것에 대해서 크게 놀랄 수 밖에 없었습니다. 앞으로 얼마나 더 발전할지 무척 기대됩니다. 물론 이러한 발전에는 수 많은 Open Source Contributor분들의 기여가 컸다고 생각합니다. 앞으로도 Elastic의 발전을 응원하며 이 글을 읽는 여러분도 기회가 된다면 Elastic{ON} 컨퍼런스에 참석하셔서 멋진 경험을 하시길 바랍니다.

긴 글 읽어주셔서 감사합니다.