스팀잇 개발 업데이트: 비용 절감, RocksDB/MIRA, 콘덴서 분리
이 포스팅은 스팀잇 공식 블로그 @steemitblog의 해당원문을 우리말로 옮긴 글입니다.
스티미언 여러분 안녕하세요. 최근 저희 팀은 운영 비용 절감, RocksDB의 적용, 그리고 콘덴서를 지갑과 소셜 기능으로 분리하는 작업 등에 열중해 있었습니다. 이번 공지에서는 저희 개발자들이 위의 업데이트 사항을 얼마나 진행해 왔는지 알려드리도록 하겠습니다. 여러분들도 저희가 아래 공유하는 내용을 바탕으로 저희 팀의 방향성에 대한 인사이트, 혹은 (앱 개발자와 같은) 노드 운영자의 경우, 본인의 비용절감을 위한 정보 등을 얻으시길 바랍니다.
1. 아마존 EC2 비용 절감
모르시는 분들도 계시겠지만 스팀잇은 사실 14개의 모듈화된 소프트웨어로 이루어져 있습니다. 이들 중 여러분이 아실만한 것들은 스팀디, 콘덴서, 하이브마인드 등이 있고 그 외 조금 덜 유명한 쥬씨, 컨베이어, 리디머 등이 있죠. 이 소프트웨어들은 모두 각각의 EC2 인스턴스(클라우드 컴퓨팅 서비스)에서 구동됩니다.
목표는 최적화
이 프로젝트의 목표는 각각의 소프트웨어가 구동되는 인스턴스를 최적화하는 것입니다. 이를 달성하기 위해 저희는 특정 시간대 및 트래픽 구간에 해당하는 CPU와 RAM 사용량을 분석합니다. 이를 통해 비효율적으로 구동되는 인스턴스를 발견하고 이를 더 낮은 비용의 인스턴스로 교체해 엄청난 비용절감을 이루는 것이죠. 또한, 어느 인스턴스가 확장 혹은 축소되었는지 확인하여 추후에 발생할 작업 시에 참고합니다. 특정 시점의 네트워크 수요에 요구되는 용량을 불필요하게 초과하지 않는 인스턴스를 사용함으로써 비용을 더욱 줄일 수 있습니다.
이 작업은 전체적인 사이트 속도에 변화가 생기지 않도록 신중하게 진행해야 하고, 트래픽이 많이 발생하는 시간대에는 재빠르게 확장할 수 있도록 작업해야합니다.
현재 상황
현재까지 14개 중 4개의 소프트웨어에 이 작업을 마무리했습니다. 이를 통해 저희는 월간 콘덴서(스팀잇을 구동하는 소프트웨어) 비용의 60%를 절감할 수 있었습니다. 컨베이어 비용 또한 성능은 그대로 유지한 채로 75%나 줄일 수 있었죠. 이 프로젝트가 완료되면 저희는 전체 EC2 비용의 20~35% 정도의 추가 절감을 얻을 수 있는 "예비 인스턴스"의 활용 여부를 고려해볼 것입니다.
2. RocksDB와 MIRA
2달 전 저희는 MIRA(Multi Index RocksDB Adapter)라 불리는 새로운 소프트웨어를 개발 중임을 공지한 적이 있습니다. MIRA 개발의 목적은 스팀 블록체인 노드가 필요한 모든 데이터를 RAM이 아닌 하드디스크에 저장할 수 있도록하기 위함이었고 그때 당시 저희는 RocksDB의 데이터 일관성에 집중하던 시기였습니다.
최근 MIRA는 몇 주간의 자체 테스트를 모두 통과해 올바르게 적용된 상태이며 현재는 성능 최적화를 작업 중입니다. 저희는 RocksDB의 성능을 최대치로 끌어올리기 위해 저희가 가진 200여개의 선택지를 검토할 것입니다. 또한 지금부터는 RocksDB를 실제 개발 환경에 적용해 어떻게 구동되는지 테스트해보는 것도 무리가 없을 것으로 보입니다. 저희의 목표는 평균적인 하드웨어 스펙에서 일정한 성능을 꾸준히 유지하는 것이며 이는 스팀디 노드 운영비용을 크게 아낄 것입니다.
3. 콘덴서 분리
마지막으로, 콘덴서를 소셜과 지갑 이 두개의 개별적인 애플리케이션으로 분리하는데 많은 진척을 이뤘습니다. 이 작업은 먼저 콘덴서를 분리한 뒤 각각의 애플리케이션에 쓸모 없는 기능들을 제거하는 과정으로 진행되었습니다. 이 프로젝트의 목적은 양 애플리케이션의 완전한 분리에 의한 불필요한 위험요소의 제거입니다. 지갑앱은 소셜앱의 어떠한 기능도 필요로하지 않고 그 반대도 마찬가지이죠.
현재 지갑앱에서는 모든 소셜 기능들을 제거한 상태이며 지갑앱의 UX 간소화 작업을 진행 중입니다. 반대로 소셜앱에서는 사용자의 액티브키와 회원가입 API(현재는 지갑앱의 일부)를 사용하는 모든 기능들을 제거하고 있습니다. 저희가 이 분리작업을 왜 진행하는지에 대한 자세한 정보는 이전 포스팅을 통해 확인이 가능합니다.
@steemitblog 팔로우하기
아직 해야할 작업이 많이 남았지만 저희는 지금까지 이뤄낸 성과에 뿌듯함을 느낍니다. 앞으로도 꾸준히 업데이트 내용을 공유해드리겠습니다. 저희가 스팀 생태계의 지속가능성 및 확장성을 위해 진행하고 있는 작업들에 대한 정보를 얻고싶으시다면 @steemitblog를 팔로우해주세요.
스팀잇 팀
스팀프레스를 통해 작성된 글입니다 : http://steeminside.kr/스팀잇-개발-업데이트-비용-절감-rocksdb-mira-콘덴서-분리/
와~~~ 멋진 번역 고맙습니다. ^^
천만에요! 읽어주셔서 감사드립니다.
뭔가 일한다는 느낌이 들어 좋군요 ㅎㅎㅎ
그렇죠. 요즘은 그나마 이런식의 보고서(?)를 작성해줘서 마냥 불안하지는 않는 것 같아요.