안녕하세요? @asbear입니다. 스팀잇 팀에서 공식으로 진행사항에 대해서 발표 하였습니다. 매우 의미있는 내용들이 많네요. 간단히 번역해 보았으니 한번 읽어보시기 바랍니다. 추가로 개발자로써 솔직한 제 생각도 약간 적었습니다 (이부분은 개발자용입니다 ㅎㅎ)
스팀잇 개발팀은 지난 몇달간 steemit.com 및 블록체인 API의 속도, 효율성, 안정성 향상을 포함한 전반적인 성능 개선을 진행 해 왔습니다. 이 포스팅을 통해 진행 사항을 알려드립니다.
그동안은 steemit.com은 블락체인으로부터 직접 데이터를 읽어왔으며 이는 비효율적인 방식입니다. 그래서 우리는 웹사이트화 블록체인 그리고 여타 백엔드 서비스들 사이에서 동작하는 Jussi라는 서비스를 추가 하였습니다. Jussi는 캐쉬 (자주읽히는 데이터를 메모리에 저장해놓고, 재사용하는기술) 및 보안계층으로 동작 합니다.
Jussi를 적용한지 며칠 되었는데, 스팀잇 웹사이트가 블록체인으로부터 데이터를 읽는 성능이 엄청나게 향상 되었습니다. Jussi를 도입한 또다른 이유는, 새로운 백엔드 구조인 AppBase를 통해 기능들을 모듈화 함으로써 추가적인 성능 향상을 도모하기 위함입니다.
@asbear: 캐쉬 레이어가 그동안 없었다는것이 저는 무엇보다 충격입니다. SNS같은 웹사이트 설계시에는 최소한 data read 캐쉬는 상식에 가까운것인데, 그것이 없었다는것이 놀랍고, 뒤늦게 그거 추가한걸로 성능 향상된걸 좋다고 자랑하는 팀의 실력(?)을 솔직히 좋게 보기 어렵습니다.
원래 하나의 steemd 블록체인 노드는 여러 스레드를 사용하여 동시에 여러 태스크를 수행할수 있지만, API 콜은 1개의 스레드가 처리하고 있습니다. 이것때문에 steemd가 처리할수있는 API의 수에 한계가 있습니다.
AppBase는 여러개의 스레드가 API콜을 동시에 처리할수 있도록, 명확한 모듈을 생성해주는 새로운 아키텍쳐입니다. 당연히 1개의 스레드가 처리하는것보다 훨씬 효율적이죠. steemd를 모듈화 함으로써 CPU의 병렬처리를 최대한 활용 할 수 있게 됩니다. 기본적인 모듈화된 블록체인은 이미 기반을 갖추었고, 이를 토대로 여러 추가적인 성능향상을 꾀할 수 있습니다.
**개발팀은 AppBase 를 상용화 준비하기위해 쉬지 않고 총력을 기울이고 있으며, 조만간 배치 할 예정입니다.
@asbear: 이부분 또한 그동안 구현되어 있지 않았다는게 더 놀랍습니다. 그리고 하물며 API콜을 1개의 스레드가 처리하고있다 하더라도, 수행단만 제대로 비동기로 분리하면 이정도까지 느려질 이유가 있을지 의구심이 듭니다. 경험상 C++의 ASIO나 NodeJS 혹은 Python Tornado의 ioloop 모두 single ioloop으로도 어마어마한 request를 처리할 수 있거든요. 결국 steemd 구현이 asynchronous가 아니라는 의미같습니다. 아무튼 성능 향상을 하였다니 다행입니다.
P2P 코드는 모든 steemd 블록체인 노드의 동기화를 수행합니다. 포스팅, 보팅등이 발생했을 때 이를 다른 노드들로 효율적으로 전송해야만, steemit등의 웹사이트에서 전송된 명령들이 빠르게 처리되고 제시간에 witness들에 의해 블록에 담기게 됩니다.
저희는 P2P 코드의 성능을 수차례 향상 시켰으며, 조만간 추가적인 성능 향상이 있을 예정입니다.
이런 여러가지 기능 및 성능 향상은 연구, 설계, 개발, 테스트, 배치등의 절차를 거치며 많은 시간과 자원을 필요로 합니다. 여러분이 최신의 진행사항을 알고싶어 하는것은 이해하지만, 진행사항을 원하는만큼 자주 전하기에는 무리가 있습니다. 저희의 최우선 목표는 최대한 빨리 성능향상을 이루는것이며, 그 목표에 최대한 집중하고 싶습니다. 또한, 우리가 충분히 상황을 파악하기 전에 이슈를 공개함으로써 불필요하게 해커들의 관심을 끌고 싶지 않습니다.
스팀잇 개발팀은 웹사이트 사용에 지장을 초래하는 모든 문제들을 신중하게 검토하고 있습니다. 여러 성능 관리툴이 24시간 steemit 웹사이트의 성능을 감시하고 있으며, 서비스가 중단되면 바로 알수 있습니다. 그리고 사용자가 웹사이트에서 어느정도 버벅임을 느끼는지 계측하는 통계 수치들도 계속 확인하고 있습니다. 문제가 있으면 우리는 이미 알고있다는 말씀입니다. 또한, 사용자분들이 바로바로 문제를 알려주셔서 감사하게 생각하고 있습니다. 문제점들에 대해 공개적으로 바로바로 소통하지는 못하지만, 저희가 항상 신속하게 문제를 해결하기위해 눈을 부릅뜨고 있다는것을 알아주시고, 맏겨주시길 바랍니다.
위에서 이야기드린 성능개선들 덕분에 저희 모두 들떠 있습니다. 왜냐하면 이 성능향상을 통해, 우리가 예상하는만큼 기하급수적인 사용자 증가하더라도 수용이 가능할 것이기 때문입니다. 저희가 세계 최고의 웹사이트를 만들어가는동안 인내심을 가지고 지켜봐 주셔서 감사합니다.
@asbear: 알아서 잘 하고있으니 자꾸 귀찬게 하지 말라는 소리로 들립니다. 맞는 말이긴 한데, 그동안 개발팀이 보여준 퍼포먼스나 백엔드 아키텍쳐의 허술함등을 보면 구글이나 페이스북 엔지니어들을 믿듯이 믿음이 확확 가지는 않네요. 저야 일개 사용자일뿐이니 잘들 하길 응원해 줘야겠지만.. 금전적으로나 시간을 투자 많이한 사람들은 목소리를 낼 자격이 있는것 아닌가 생각도 들고 그렇습니다.
Steem on,
스팀잇 팀
https://steemit.com/performance/@steemitblog/performance-and-scalability-updates