kblogs6 kblogs6

 

데이터 Sync 플랫폼을 통한 미래 준비

디지털 시대의 다이나믹함에 따라 데이터 또한 매우 다이나믹 해졌습니다. 고객, 전망, 리드 등과 같은 데이터가 특히 이러한 변화에 민감하며 기업들은 최대한 변화하는 시대에 맞춰가고자 고군분투하고 있습니다. 그리고 여러 솔루션들에 걸쳐 여기저기 흩어져있는 엄청난 양의 데이터를 매번 업데이트하고 sync (동조)하여 관리하기란 매우 까다롭습니다. 이는 Freshworks의 제품들인 Freshdesk, Freshsales, Freshservice나 다른 모든 SaaS 솔루션들 또한 마찬가지 입니다.

​그럼 여러 솔루션들에 모든 데이터를 sync하고 해당 솔루션들의 연동을 관리하고 sync 실패를 최소하 하는 방법은 무엇일까요?

​Freshworks는 이를 Freshpipe를 통해 해결하고 있습니다. Freshpipe는 Freshworks의 IPaaS (Integraion Platform as a Service, 서비스로서의 연동 플랫폼)으로 2017년 1월 Pipemonk사를 인수하며 시작되었습니다. Freshpipe는 데이터 연동 솔루션으로 여러 클라우드 기반의 제품들 내 데이터를 자동으로 연동 및 관리해주는 솔루션입니다.

​하지만 Freshpipe 서비스를 런칭하면서도 어려움이 많이 따랐습니다. Pipemonk를 인수하고 약 2년 동안 제품 및 고객 증가와 함께 sync 해야할 데이터의 양이 기하급수적으로 늘어났기 때문입니다. 그리고 결국 Freshsales 팀은 수 많은 고객 불만을 접수하고 다른 해결책을 찾아나섰습니다. 고객들은 Freshdesk와 Freshsales 간 sync 에러가 약 12%에 달하며 이는 수용할 수 있는 수준이 아니라고 하였습니다.

​다행이도 저희는 Freshpipe를 성공적인 데이터 연동 플랫폼으로 개선시켰으며 외부 솔루션을 사용할 때 발생될 엄청난 비용을 아낄 수 있었습니다.

자동화를 통한 지속적인 노력

이런 문제를 해결하기 위해 저희는 두 가지 접근 방식을 택했습니다. 첫 째, 우선 외부 솔루션을 알아보고 검토해보기로 동의하였습니다. 그리고 두 번째는 지속적으로 Freshpipe 내 sync 에러 및 플랫폼 개선과 같은 문제점들을 지속적으로 해결하기로 하였습니다.

​PiSync, Zapier, MuleSoft, Cloulld Elements와 같은 외부 솔루션들을 검토한 후 Freshsales 팀에게 추천한 뒤 Freshpipe에 집중하기로 하였습니다.

​2019년 2분기에 들어서 sync 에러를 10%로 줄일 수 있었으나 여전히 너무 높은 수치였습니다.

​저희는 Freshpipe가 제공하는 연동항목들을 엄청난 공수를 들여 모두 문서화하였습니다. 여기에는 Freshsales와 Hubspot, Freshsales와 Mailchimp, 그리고 Freshsales와 Freshdesk 연동이 포함되어 있었습니다.

​현재 Freshsales에는 '리드'와 '연락처'가 있으며 해당 항목들 아래 데이터가 존재하고 있습니다. Freshdesk와 완변한 연동을 위해서는 둘 중 한 솔루션에서 업데이트가 이루어지면 다른 솔루션에서도 업데이트가 일어난 다는 것을 의미하였습니다. 우리는 모든 데이터를 일일히 바꾸어보며 두 솔루션의 연동을 비교분석 하고 기록하였습니다. 엄청난 양의 노력을 필요로 하였으나 이는 솔루션간 연동 및 데이터 sync의 문제점들을 파악하는데 꼭 필요한 작업이었습니다.

​이 후 문서화된 모든 연동 및 sync 항목에 대해 테스트 케이스를 작성하였습니다. 또한 절차를 간소화하기 위하여 이를 위한 자동화 코드를 만들었습니다. 예를 들어 Freshsales 연락처 내에 이름을 수정하면 Freshdesk 내 이름도 똑같이 수정되는지 자동으로 확일할 수 있는 코드를 만들었습니다.

​이러한 자동화는 어디서 sync 에러가 발생하는지 빠르게 확인할 수 있도록 도와주었습니다. 즉, 우리는 데이터에 기반한 문제해결 방법을 선택하였습니다.

​그리고 2019년 7월 경에는 에러 로그를 분석하는 자동화도 진행하였습니다. 해당 자동화는 매일 전날 발생한 문제들을 일일히 확인할 필요가 없다는 것을 의미하였습니다. 해당 자동화를 통해 12시간 마다 발생한 에러들을 항목별로 티켓 발행하였습니다. 이러한 자동화를 통해 에러 보고서를 손쉽게 만들 수 있었고 해결해야하는 문제들의 우선순위를 보다 쉽게 설정할 수 있게 되었습니다.

​지속적인 자동화, 우선 순위 설정, 문제 해결을 통해 짧은 시간 내에 많은 sync 문제들을 해결할 수 있었습니다.

​5월 경 자동화 작업을 시작하였을 때 매일 약 150개의 에러 티켓들이 발행되었었습니다. 8월에 들어서는 약 45개로 줄었으며 연말 12월에는 15개까지 줄일 수 있었습니다.

​결과적으로 sync 정확도를 98%까지 올릴 수 있게 되었습니다.

 

수확

 

2019년 11월에 들어 Freshsales 팀은 Cloud Elements 제품 검토를 중지하였으며 Freshpipe에 대한 만족감을 표했습니다. 내부적인 계산에 따르면 만약 외부 솔루션을 사용했더라면 약 10억원의 추가 비용이 발생했었을 것입니다. 그리고 Freshpipe는 해당 비용을 절감시켜주었습니다.

​​

kblogs7 kblogs7
 

위 표 L2 티켓의 숫자는 고객들이 엔지니어링 지원팀에 문의한 수를 나타냅니다. 문의 양의 눈에 띄는 절감은 고객들이 문제를 발견하기 전에 문제를 파악하고 해결하였기 때문입니다. 대게의 경우 고객들이 알아채기 전 문제들이 해결되었습니다.

​완벽한 문제 해결을 위해 고객 지원팀의 Freshpipe 팰랫폼 교육도 진행하였으며 특정 인원에게는 제품 라이센스도 제공해주었습니다. 따라서 고객이 지원팀에 문의하고 지원팀이 Freshpipe 팀에게 문의하고 되돌아갈 필요 없이 고객지원팀이 문제 해결을 할 수 있도록 하였습니다.

문제점

데이터 sync를 진행하는 동안 여러가지 문제를 직면하였습니다. 그중 하나는 새로운 연동이 이루어질 때 일반 적으로 5시간에서 6시간 정도가 걸린다는 것이었습니다. 이러한 경우 Freshpipe 서비스를 약 15분에서 30분동안 제공할 수 없었습니다. 우리는 이러한 문제가 발생하는 것을 원치 않았기 때문에 연동 작업 또한 자동화하였습니다. 그리고 또한 '듀얼 스택 시스템'을 도입하여 한 '스택'에서 연동 작업이 이루어질 때 다른 '스택'은 정상 작동되도록 하였습니다. 자동화와 듀얼 스택 시스템은 연동 작업 시간을 1시간 내로 줄여주었을 뿐만 아니라 Freshpipe 서비스가 끊임없이 제공되도록 해주었습니다.

​스크립트 기반 작업의 또 다른 장점은 누구나 간단한 클릭만으로도 작업을 할 수 있다는 것입니다. 이에 반해 이전에는 시스템에 대한 이해도가 높아야 작업을 진행할 수 있었습니다.

​추가적으로 '세션 관리' 문제 또한 발생했었습니다. 아이디와 패스워드를 입력하면 세션이 세션 키에 저장되었는데 해당 키는 플랫폼 내 인증작업을 위해 사용되었습니다. 세션 키를 유지하기 위해 우리는 Hazelcast라는 기술을 사용하였습니다. 이 키는 AWS에 호스팅된 모든 장비에 유지되어야 하였는데 여기에서 문제가 있었습니다. 어떠한 이유에서인지 장비가 부팅될 때 해당 키를 유지할 수 없었습니다.

​이 문제를 해결하기 위하여 우리는 개별적인 장비에 저장되는 세션 키들을 제거하였고 Redis라고 불리는 중앙 저장 장치에 접속하여 키들을 갖고오도록 하였습니다.

​Freshpipe 작업을 하는 동안 발생한 또 하나의 문제는 솔루션들의 문서 저장 데이터베이스인 MongoDB를 사용하는 방식에 있었습니다.

Freshpipe의 이전 코드들이 없었음에도 불구하고 계속해서 해당 시스템을 사용하고 있었습니다. 해당 코드는 Pipemonk에서 일하던 이전 팀에 의해 작성되었으며 이들은 대부분 회사를 떠나거나 다른 프로젝트에 배정되었었습니다. 또한 지난 2년간 해당 데이터베이스는 약 3TB까지 커져있었으며 추가 작업을 어렵도록 하였습니다.

​이 문제를 해결하기 위해 우리는 30일이 경과한 데이터들을 삭제하였으며 MongoDB에 더이상 사용되지 않는 항목들을 제거하였습니다. 또한 사용되지 않는 '인덱스'도 제거하였습니다.

​이전에 Redis, Hazelcast, MySQL, Mongo, RabbitMQ에 의해 구성된 아키텍쳐를 MySQL과 Redis로만 구성되도록 바꾸었으며 이는 시스템을 크게 간소화 시켰습니다.

Pipe라인의 미래

 

​현재 가장 큰 목표는 실시간 데이터 sync를 이루는 것입니다. 이전까지 데이터를 매 12시간 마다 sync 하고 있었습니다. 처음에는 이 시간을 3시간 혹은 4시간으로 줄이는 것을 고려하였는데 그럴 필요 없이 실시간으로 이루어지는 것이 더 합당하다고 결론을 내렸습니다. 1분기 말에는 5가지 연동 제품들에 대해 실시간 sync를 제공할 예정이며 여기에는 Freshsales와 Freshdesk, Freshdesk와 Hubspot, Freshsales와 Mailchip, Freshsales와 Hubspot, 그리고 Freshteam과 Freshservice가 포함됩니다.

​또 하나의 중요한 단계는 플랫폼들을 '마켓플레이스' 개발자들에게 공개한 것입니다. 현재는 Freshpipe 팀이 앱간 연동을 도 맡아 하고 있으나 곧 Freshworks 마켓플레이스 개발자들이 Freshpipe를 통하여 연동앱을 개발할 수 있도록 할 예정입니다. 따라서 REST API를 제공할 것입니다. 이를 통해 사람들이 자신들이 사용하는 솔루션들에 맞춰 개발하며 Freshpipe의 가능성을 최대한 열고자 하고 있습니다.

​올해 말까지 Freshworks 플랫폼에 20에서 30개의 sync 앱들이 출시될 것으로 전망하고 있습니다. 현재 연동 앱을 개발하기 위해서 약 한달 간의 기간이 걸리는데 이를 일주일로 줄이는 것을 목표로 하고 있습니다. Freshpipe를 통하여 앱들간 연동 및 연동 앱 개발이 그 어느 때보다 간편해질 것을 기대하고 있습니다.