국내 최초 가상 자산거래소 Korbit

Korbit 소개

코빗은 2013년 7월 대한민국 최초로 설립된 가상자산 거래소로 설립 이후 핀테크 기술력을 인정받아 소프트뱅크, 판테라 등 세계 유수 펀드로부터 투자를 유치했으며 2017년에는 글로벌 게임 기업 넥슨(NEXON)의 지주회사인 NXC에 인수되었습니다. 현재 실명확인 계좌 거래가 가능한 국내 5대 거래소 중 하나이며 국내 유일 신한은행 실명확인계좌를 통한 원화(KRW) 입출금 거래가 가능합니다. 특히 특정금융정보법 시행 이후 코빗은 2021년 10월 금융위원회 산하 금융정보분석원(FIU) 으로부터 가상자산사업자 신고 수리를 인가 받으면서 국내 2호 가상자산사업자가 됐습니다. 2021년 11월에는 SK 스퀘어로부터 900억 원 규모의 투자를 유치해 새로운 성장 동력을 확보하며 국내 최고 수준의 가상자산 거래소로 발돋움하고 있습니다.

 

korbit 3

뉴렐릭을 도입하게 된 계기

코빗은 국내 최초 가상자산 거래소이다보니 아무래도 수년 전부터 유지되어 온 레거시 시스템이 있고, 유지보수도 벅찬 그런 레거시로 인해서 발생하는 비효율적인 업무가 반복되는 문제를 해결하기 위해서는 기술적인 부분들, 새로운 기술의 도입이나 마이그레이션이 필요했습니다. 그렇게 해야만 가상자산 업계에서 비즈니스 환경이 빠르게 변화하는 것에도 대응할 수 있을 뿐더러, 코빗의 성장을 위해서 새로운 서비스를 지속적으로 출시하기 위해서도 필요했고, 무엇보다도 안정성이 중요한 가상자산 거래소로서는 즉각적인 이슈 모니터링 환경을 구축하는 일도 비즈니스에 반드시 필요했습니다. 그러다보니 코빗은 2013년 첫 발을 내딛은 후, 이제 거의 10년 가까이 된 회사임에도 현재 트렌디한 기술들을 거침없이 도입을 했고, 오늘날의 여느 스타트업들과 비교해도 기술 스택에 뒤쳐지지 않는 수준을 가지고 있다고 생각하고 있습니다. 빠르게 변화하는 시장 상황이나, 기민하게 새로운 서비스를 개발하기에 그런 스타트업스러운 기술 스택이 가지는 장점이 크기도 하고요. 덕분에 저희도 기민하게 가상자산 업계의 변화에 대응할 수 있었습니다. 

이번 장기적으로 코로나를 전후해서 비즈니스에도 어느정도 영향이 있었습니다. 가상자산 거래소는 직접적으로 실물경기에 영향을 받는 다른 비즈니스들처럼 코로나로 인해 직접적인 타격을 받지는 않았습니다만, 2020년 하반기에 시장에 유동성이 크게 늘어나고, 공격적인 투자 심리가 늘어나면서 가상자산에 대한 투자가 크게 늘었고, 특히 해외에서는 기관 투자자들이 이러한 시세 상승을 견인하는 등, 가상자산 시장이 크게 활황세를 맞게 되는 과정에서 코빗도 거래량이 크게 늘어나기도 했습니다. 그러다보니 트래픽이 급격하게 늘어나서 인해 평소 인지하지 못했던 이슈들이 발견되는 경우들이 있었습니다. 특히나 이러한 상황에서 발생하는 이슈들, 즉 트래픽이 급격하게 늘었다는 건 곧 거래량이 크게 늘었다는 건데 한창 가상자산 거래소가 가장 바쁜 때라고 할 수 있는 상태이기에 이런 상황에서 예기치 않은 이슈가 발견되는 경우에는 중대한 이슈로 번질 수 있는 만큼, 빠르게 이를 인지하고 원인이 무엇인지 파악하는 일이 우선되어야 했습니다. 트래픽 폭증 대한 대책, 장애 발생시 대책, 그런 프로세스의 정립과 문제 해결에 관해서 최선의 방안을 고민해서 적절한 답을 찾아야 하는 어려움이 있었습니다. 

기존에는 로그 트래킹을 위한 솔루션으로 코랄로직스를 사용하고 있었습니다. 하지만 코랄로직스의 여러 한계점으로 인해서 뉴렐릭을 도입하기로 결정했고, 지금 코빗에서는 이들을 병행하여 사용하고 있습니다. 뉴렐릭과 코랄로직스는 서로 결이 다른 솔루션이지만 시스템을 관제한다는 측면에서 비교를 해볼 수는 있겠는데요, 코랄로직스는 시스템 로그를 수집하고 이를 주기적으로 시각화하는 데에 주로 활용하고 있고요. 그렇지만 로그 저장 스토리지에 제약이 있었기에 로그를 많이 쌓는 것에 대한 부담이 있었고 더불어 분산 트랜잭션 환경에서 로그 트래킹이 쉽지 않았다는 것이 또 두번째 걸림돌로 느껴졌습니다. 이에 대안으로 뉴렐릭을 도입해서 사용하게 되었습니다. 

 

도입 후에 보였던 변화 및 결과

코빗에서 옵저버빌리티의 의미는 크게 세 가지로 이야기 할 수 있습니다. 첫째, 평균 해결 시간(MTTR), 즉 문제가 발생했을 때 그것을 인지하고 파악해서, 해결한 것을 배포하기에 이르기까지의 시간을 줄여줄 수 있는 도구라고 생각됩니다. 두 번째로는, 코빗은 쿠버네티스를 비롯해 다양한 환경에서 여러 서비스들을 구축하고 있는데 이들을 하나로 통합해서 볼 수 있는 도구라고 생각이 됩니다. 마지막으로는, SLI, 서비스 수준 지표를 지속적으로 모니터링함으로써 궁극적으로 고객의 서비스 만족도 향상에 기여할 수 있는 도구입니다. 뉴렐릭의 옵저버빌리티를 도입한 후, 비즈니스에 있어서는 조금 더 안심하고 가상자산 거래소라는 시스템을 운영할 수 있는, 가상자산 거래소 비즈니스를 진행할 수 있는 든든한 느낌을 받을 수 있었습니다. 

코빗의 모든 서비스는 클라우드 환경에서 서비스되고 있는데 작년에는 쿠버네티스를 모든 서비스를 대상으로 적용하여 클라우드 인프라에서의 개발 및 운영상의 여러 이점을 얻을 수 있었습니다. 개발 측면에서는 좀 더 효율적이고 민첩한 개발이 가능해졌으며, 마이크로서비스 아키텍처를 구축하는 데에도 유리하고, 운영 측면에 있어서도 배포에서 부터 장애 대응 등 여러 측면에서 좋은 점이 있었습니다.

그리고 코빗은 국내 최초 가상자산 거래소이다보니 아무래도 레거시나 모놀리식한 큰 서비스가 존재합니다. 이런 것들을 지속적으로 새로 만들거나 마이크로서비스로 분리하고 있으며, Java 뿐만 아니라 Scala, Kotlin, Node.js, Go, Rust 등 여러 프로그래밍 언어를 적재적소에 맞추어 사용하고 있습니다. 프론트엔드 측면에서는 여러 서비스들이 각각의 싱글 페이지 애플리케이션으로 구축되어 있는데 파편화 되어 있는 것들을 통합하려고 하고, 그런 각각의 웹페이지들이 요청을 전송하는 대상 서버나 데이터를 주고 받는 방법들도 파편화 된 면이 있는데 이를 통일하려고 했습니다.

마지막으로, 마이크로서비스 기반의 분산 트랜잭션 환경에서는 동시성 및 데이터 싱크 이슈를 고려해야 하는데, 그러려면 통합된 모니터링 시스템을 바탕으로 여러 클러스터나 서비스를 한 눈에 살펴볼 수 있어야 합니다. 그렇기에 뉴렐릭의 옵버저빌리티가 앞으로 코빗의 시스템 확장 및 관리, 운영에 있어서 어떤 구심점이 될 것이라고 생각했습니다. 

실제 운영팀 내에서도 옵저버빌리티가 가져온 많은 변화들이 있었습니다. 먼저 회사라는 큰 관점에서 보자면, 아무래도 클라우드 컴퓨팅에 있어서는 컴퓨팅 자원의 오버 프로버지닝과 언더 프로버지닝을 피해야 비용을 절감하고 궁극적으로는 회사의 이익에 기여할 수 있습니다. 요컨대 옵저버빌리티가 그러한 인프라 운영 시 발생할 수 있는 오버 프로버지닝, 언더 프로버지닝에 대해 인지를 시켜줌으로써 비용이나 성능 측면에서의 개선을 가능하게 해 준다고 생각합니다.

팀 단위의 관점에서 하나의 예시를 들자면, 저희가 새롭게 개발한 가상자산 체결 관련 데이터를 처리하는 시스템이 있는데 상당히 성능에 많이 공을 들인 것이 있습니다. 그런데 개발 완료 후 테스트 과정에서 묘하게 때때로 기대보다 한참 느리게 응답을 해 주는 문제가 있음을 알게 되었습니다. 원인을 찾아내기 위해 많은 노력을 했고, 그 과정에서 추가적인 최적화와 문제 해결을 거쳐 나름 만족스럽게 성능 향상 및 문제 해결이라는 도전을 마무리할 수 있었는데 그 과정에서 뉴렐릭 풀 스택 옵저버빌리티가 많은 인사이트를 제공했고, 백엔드 개발자와 데브옵스 팀 간의 간극을 줄여서 함께 문제를 탐색할 수 있는 기회도 얻을 수 있었습니다.  

쿠버네티스 클러스터 모니터링을 뉴렐릭의 픽시(Pixie) 적용을 통하여 개선된 부분 또한 공유하고 싶습니다. 저희가 점차 여러 개의 쿠버네티스 클러스터를 운영하게 되면서 중앙화된 모니터링 도구가 필요하게 되었습니다. 이에 오픈 소스로 유명한 프로메테우스와 그라파나 조합으로 각 클러스터의 메트릭을 수집하여 모니터링 할 계획이었습니다. 그러나 여러 클러스터의 메트릭을 중앙화하여 수집하고, 수집된 메트릭으로 필요한 모니터링 대시보드 구축 작업을 빠른 시간 내에 수행하는 것이 여건 상 불가능 하였습니다. 이에 뉴렐릭의 픽시를 도입하게 되었는데 훨씬 간편하게 설치할 수 있었고, 기본 대시보드만으로도 충분히 클러스터의 상태를 중앙화하여 모니터링 할 수 있었습니다. 게다가 기존 오픈소스에서 수집하는 메트릭보다 더욱 다양한 메트릭을 수집하여 시스템 장애 발생 시 쿠버네티스 클러스터 문제인지 빠르게 인지하고 대응할 수 있게 되었습니다.

 

korbit 4

Why New Relic? 

뉴렐릭 선택의 이유는 성능, 비용, 속도입니다.

뉴렐릭을 통해 다양한 서비스 로직들의 성능을 한눈에 관찰 할 수 있고 이는 더 높은 성능의 개선을 얻기 위해 중요한 지표가 되고 있습니다. 성능의 개선은 곧 사용자에게 빠르고 편한 서비스 경험을 제공시켜줍니다. 그리고 각각의 클라우드 인프라의 자원 사용량과 유휴 자원의 모니터링을 통해 적재적소에 시스템 자원을 조정할 수 있도록 직관적인 데이터를 제공함에 있어서 합리적인 인프라 비용 설계에도 긍정적인 영향을 주고 있습니다. 마지막으로 속도인데요. 가상자산 거래소에서는 크고 작은 내적, 외적 리스크에 24시간 쉼없이 노출되어있습니다. 저희가 컨트롤 할 수 없는 다양한  외부 이슈에 대해 대응 할 수 있는 최선책은 빠른 이슈 파악과 해결입니다. 

2022년 하반기 FTX 사태로 인해 평소와는 다른 급격한 거래량의 유입으로 인해 일부 서비스에서 문제가 발생한 적이 있었습니다. 체결 서비스에서 비정상적인 스레드 증가로 인한 일시적인 이슈였습니다. 이 증상을 뉴렐릭을 통해 찾아냈고 원인 분석과 신속한 해결을 해내는데 큰 기여를 했습니다. 이처럼 단순 로그 모니터링이 아닌 분산된 서비스 아키텍쳐 환경에서 각 클러스터 자원을 쉽고 빠르게 분석할 수 있다는 점은 충분히 뉴렐릭을 사용해야하는 명확한 이유가 되고 있습니다.

앞으로의 계획

가상자산 거래소는 당연히 거래가 잘 되어야 한다고 생각합니다. 거래소는 거래소답게, 거래소의 본질적인 기능에 충실해야 한다고 생각하고, 그러한 방향으로의 시스템 개선에 집중하고자 합니다. 당연하지만 그건 쾌적한 퍼포먼스와 안정성에서 나온다고 생각을 하기에 빠릿빠릿하게 가상자산을 매수, 매도할 수 있고, 자산을 안전하게 입금하고 출금할 수 있고, 고객들이 믿고 이용할 수 있는 거래소를 만드는 것이 코빗의 계획입니다.

추가적으로는 저희가 리서치 센터나 유튜브를 통해서 가상자산에 관한 다양한 정보를 제공하고 있다는 점에서는 단순히 가상자산을 사고 파는 곳만이 아니라, 가상자산에 관한 충실한 정보를 제공하는 곳으로도 거듭나고 싶습니다. 또, NFT나 여러 부가 서비스들, 예를 들면 저희가 개발한 가상자산 적립식 구매 시스템과 같은 고객들을 위한 새로운 서비스들을 추가해서 고객 편익 극대화에 충실하려고 합니다. 아울러 개발 측면에 있어서는, 어제보다 오늘이 나은, 오늘보다 내일이 나은 서비스를 만들기 위해서 지속적으로 이슈를 해결하면서 동시에 기술 부채를 예외 없이 모두 해결하고자 생각하고 있습니다.

코빗은 문화 측면에서도 기본적으로 수평적인 커뮤니케이션을 지향하고 있습니다. 코빗의 구성원이 대표님께 직접 아이디어를 제시하고 그것이 실제 제품에 반영되는 사례는 어렵지 않게 볼 수 있습니다. 최근 재미있었던 이벤트는 사원증 사진을 그냥 본인 증명사진으로 사용하는 게 아니라, 유명 NFT인 크립토펑크 스타일의 캐릭터로 맞춰서 사원증을 제작하고, 실물 사원증을 만드는 것과 동시에 NFT로도 사원증을 만들어 배부했던 일이 있습니다. 아무래도 가상자산 거래소가 아니면 하기 어려운 일일 것 같은데요. 재미도 있으면서 회사에 대한 소속감도 높여주고 동시에 가상자산 거래소의 직원이지만 아직 NFT가 낯선 분들께도 NFT를 직접 다룰 수 있었던 좋은 계기가 되었던 것 같습니다.

이런 여러가지 활동 및 직원들의 전문성 향상을 위한 아낌없는 교육비 지원과 자율근무제도를 시행을 통해 꾸준하게 소속감과 전문성을 길러주고, 그것이 실제로 발휘될 수 있는 토양을 만들어주는 게 코빗이 만들어 온 문화이며, 앞으로도 계속적으로 만들어 갈 계획입니다.

 

 

k3

뉴렐릭은 점차 세분화되는 서비스만큼 복잡해지는 시스템 구조에서 한층 더 안정적인 서비스 개발과 운영을 가능케 하는 기반을 마련해주고 있습니다. 이를 바탕으로 우리는 기민한 서비스 개발에 집중할 수 있습니다.