3월 6일부터 8일까지 3일 동안 영국 런던에서 있었던 QCon 컨퍼런스에 다녀왔다.
컨퍼런스라는걸 다녀볼 수 있는 기회가 없었다. 국내 컨퍼런스는 몇번인가 다녀봤지만 기대했던 것에 비해서 얻는게 너무 없었다. 그렇다고 해외 컨퍼런스를 회사 다니면서 가볼 기회가 쉽게 주어지지 않았다. 사실 기회가 한번인가 있긴 했지만 “치사하고 더러워서” 포기하고 말았었다. 회사를 이직 한 후 작년 4월에 O’Reilly Architecture 컨퍼런스에 참석할 기회가 생겨서 다녀왔었는데, 정말 신세계가 내 앞에 펼쳐졌다. 말로야 아키텍쳐가 거기서 거긴데 뭘 배울게 있겠나 싶었지만 정말 정말 값진 시간을 가졌다. 덕분에 마이크로서비스 아키텍쳐 기반으로 시스템을 개발하는데 많은 도움이 됐다. 이 컨퍼런스가 아니었다면 아마 지금까지도 거지발싸게 같이 시스템을 구현하고 있지 않았을까 싶다.
바쁘게 개발 작업을 하면서 “마이크로서비스 아키텍처 방식으로 개발한다” 라는 것을 올바르게 실행하고 있는지 의문이 들었다.
- 잘게 쪼개서 RESTful 방식으로 소통하도록 시스템을 개발하는것이 맞긴 한데 그럼 어느 정도 수준으로 쪼개는게 맞는거지?
- 그리고 이렇게 많아지는 시스템들을 어떻게 관리하는게 좋은거지?
- 개별 시스템들이 RESTful이라는 그물망으로 엮여지게 된다. 그 망 가운데 하나라도 고장이 난다면 결국 전체 시스템의 피해가 날 수 밖에 없는 상황 아닌가? 따지고 보면 개발의 자유도는 올라가지만 시스템적인 측면에서 본다면 기존 방식(Monolithic)과 차이점이 없는거 아닌가?
이런 질문들을 마음에 품고 있었는데, 이번 QCon 컨퍼런스에서 이많은 궁금증을 해소할 수 있었다.
QCon 컨퍼런스는 InfoQ.com 에서 진행하는 개발 컨퍼런스다. 개발에 관련된 최근 핫한 혹은 이슈가 되는 주제들과 개발 조직, 문화 그리고 코딩에 대해 이야기한다. 학술 컨퍼런스와 달리 대부분 발표하는 사람들이 실무에서 개발을 하고 있거나 개발에 직접적으로 연관되어 있다. 중요한 포인트는 간접적으로 연관된게 아니다라는 사실이다! 그리고 전세계를 돌면서 각 지역의 특색을 반영해서 컨퍼런스가 진행된다. 런던의 경우는 금융 산업이 발전되어 있는 덕분인지 금융권쪽의 몇 가지 구현 사례들이 소개되어 나름 흥미로웠다. 역시나 우리 나라 금융권 부장/과장/대리/사원 개발자들과는 달랐다. 그들도 양복을 입지 않고 청바지에 티셔츠를 입는다.
여러 주제에 관련된 트랙이 3일 동안 진행됐지만 내가 주로 관심있게 본 트랙은 주로 아키텍쳐, 코딩, 엔지니어링 문화에 관련된 부분들이었다. 앞에 짧게 언급했지만 그동안 개발을 하면서 이게 맞나?? 하는 의문점들의 해소가 급선무였다. 그리고 내가 코드짜는게 과연 올바른 코드인지 그리고 팀의 문화를 어떻게 발전시키면 좋을지에 대해서도 새로운 돌파구가 필요하다고 생각했다.
마이크로서비스 아키텍쳐와 관련해서 주로 사람들이 이야기하는 키워드는 “Resilient, Distributed, Reactive“에 집중됐다. 기존 시스템의 문제점을 이야기하고, 문제점을 해결함과 동시에 키워드에서 제시된 기술적인 목표들을 달성하기 위해 어떤 방식으로 접근했는지를 설명했다. 흥미로웠던 점은 거의 대부분의 회사들이 Kafka를 기반으로 Messaging 시스템을 구축했고, 이를 통해 이벤트 중심(즉 비동기)의 분산 처리 방식으로 시스템을 구축하고 있다는 사실이다. 분산 환경 및 세분화된 마이크로서비스 환경을 관리하기 위한 방안으로 Service discovery, Integrated logging, Integrated monitoring 체계를 제시하고 구현하고 있었다. 이심전심으로 환경에 대한 관리 부담을 크게 인식하고 있었고, “통합(Integrated)” 개념을 관리 측면에 도입해 살아남으려고 했다. 나도 살아남아야겠다!!
업무의 가시성과 관련된 세션도 있었는데, 흥미로운 점은 이제 다들 에자일 혹은 XP 이야기를 굳이 세션에서 꺼내지 않는다는 점이다. 어떤 세션에서는 강연자가 “나는 에자일을 싫어한다” 라고 이야기를 해서 객석에 있는 사람들로부터 환호성을 받기도 했다. “이건 뭐지???” 라는 생각이 휙 머리를 스쳤다. 하지만 그 친구가 이야기하는 것 자체가 이미 에자일스러웠다. 반어적인 것 같지만 그만큼 유연하게 업무를 진행하는 방식은 이미 일상화가 됐다고 보여진다. 청중의 환호는 강제적인 에자일 “프로세스의 실행 강요”에 대한 이질감의 표현이지 않을까 싶었다. 자꾸 틀이라는 것을 강조하는 구태적인 사고는 필요없을 것 같다. 자유로운 개발을 위해 필요한 것들만 취하면되지 형식이 있다고 굳이 거기에 몸을 맞출 필요는 없다.
프로그래밍 언어적인 측면에서 자바는 계속 살아남기 위해 분투중이었다. 하지만 마이크로서비스 분산 환경에서의 대세는 아마도 Go 언어인 것 같다. 어떤 언어가 앞으로 세상을 주름잡을 것인가에 대한 토론에서 앞도적으로 언급된 언어적인 특성은 Concurrency에 대한 지원이었다. 그리고 그걸 가장 대표적으로 잘 하고 있는 언어가 바로 Go라고 이야기를 했다. 심지어 마이크로소프트 프로그래밍언어/컴파일러 전 임원이! 앞으로 더 재미있게 코딩을 할려면 Go 언어를 배워둬야겠다.
혼자 갔기 때문에 내 궁금증 해소가 우선이라 관련된 세션들을 집중적으로 들었다. 하지만 같은 시간에 진행되는 재미있는 다른 세션들도 있어서 무척 아쉬움이 남는다. 한 사람이라도 같이 갔다면 나눠서 듣고, 다른 세션에서는 어떤 재미있는 이야기들이 있었는지 맥주 한잔하면서 토론할 수 있었을텐데… 지난번 컨퍼런스에도 느낀 점이긴 했지만 이번에도 비슷한 감정을 또 한번 더 느꼈다.
전체 이야기들을 다 풀어낼 수는 없고, 짧은 글 솜씨 이야기로 해봐야 전달되기도 어렵다. 각 세션들에 대한 동영상이 있으니까 그 안에서 관심가는것들을 챙겨보면 좋을 것 같다.
https://www.infoq.com/conferences/qconlondon2017
물론 동영상으로 보는 것보다는 현장에서 직접 보고 듣는 것들이 훨씬 더 많이 남는다. 궁금증에 대한 답을 발견하고, 그걸 Case Study로 설명까지 듣고 있을 때는 여러 감정이 복잡하다.
- 해결하지 못한 것에 대한 자책감도 들고,
- 당장 우리쪽에 적용하기 위한 코드를 작성하고 싶다는 열망도 들고,
- 까먹기 전에 빨리 사람들에게 공유해야겠다라는 절박감도 들고…
개발자라면 꼭 이런 곳을 찾아다니면 좋겠다. 가장 먼저는 비용이 문제고, 장시간 타야하는 비행기도 문제기도 하지만 정말 얻을 게 많다. 그런 관점에서 현재 직장인 라이엇 게임즈는 정말 좋은 회사다. 그리고 갈 수 있도록 배려해준 동료들에게 감사하고, 출장을 승인해주신 디렉터님도 정말 훌륭하시다!!!
쪼금 아쉬운 점은 아침 8시부터 저녁 7시까지 꼬박 진행되는 일정 때문에 어디 다니지를 못했다는 거. 하지만 즐거운 여행은 언제라도 가능하지만, 이번 기회와 같은 배움의 기회, 배움의 즐거움은 다시 살 수 없기에 정말 재미있는 시간이었다.
이런 배움을 쌓아서 기회가 된다면 나도 QCon 이나 O’Reilly 같은 컨퍼런스에 발표자로 도전해보고 싶다.