요즘, 파이썬에도 async 바람이 불고 있는 것 같다. (어쩌면 오래 전부터 인지도 모른다. 다만 내가 좀 늦었던 것 같다.) 
Web Framework Benchmark 사이트에서 파이썬 서버로 상위권을 유지하고 있는 vibora(https://github.com/vibora-io/vibora ),  japronto(https://github.com/squeaky-pl/japronto) 을 조금 살펴 보았다.  

 둘다 async 기반이다. 핵심코드가 C로 이루어져 있었다. 그리고 안타깝게 프로젝트가 멈춰있었다. 

 확실히 요츰 추세는 async 기반인 것 같다. 내 머리속으로 상상코딩을 해보았을 때, 하나의 웹페이지가 보여지기 위해서는 여러번의 query 가 필요하다. (물론 내가 다루는 웹은 admin 시스템일 경우가 많다. ) 그리고 일반적인 시스템은 DB 서버와 웹서버가 분리되어 있다. (물론 내가 다루는 시스템은 한 서버에 둘다 있다. 나도 좀 풍족하게 시스템을 구성 하고는 싶다.) . 웹서버가 DB서버에 쿼리는 하나만 보내면 웬지 손해같다. 독립적인 쿼리를 2~3개 보내에 쿼리 결과를 기다리는 시간이 단축될 것이다. 

 그리고 놀라운 것은 핵심코드가 C 로 되어 있는 것이다. 예전부터 파이썬하면 들었던 이야기가 파이썬은 glue language 라서 다른 언어와 결합이 잘 된다는 것이었다. 물론 많은 프로젝트가 C로 만들어진 것이 많다. 파이썬 웹서버도 이젠 C로 만드는 시대가 되는 것인가 하는 생각이 든다.

 다만 안타까운 것은 두 프로젝트가 멈춰있다.  vibora 는 뭔가 다시 만들어지고 있다고 하니 그래도 기다려보면 괜찮은 프로젝트가 나올 것 같다. 

 

 지난 번 zapier 를 대체할 만한 툴에 이어, slack 을 대체할 툴을 찾아 보았다. 현재 다니고 있는 회사에서 slack 을 사용하고 있다. slack 이 참 좋긴 한데, 작은 startup 에서는 이것 저것 많은 비용을 쓰기가 어렵다. 그래서 Open source 의 설치형 툴을 찾아 보았다. 

 처음에 시도한 툴은 zulip(https://github.com/zulip/zulip ) 이었다. 이 툴을 선택한 첫번째 이유는 파이썬 툴이기 때문이다. 아무래도 툴을 사용하다가 문제가 생기면 스스로 고쳐야 할 수도 있기 때문에 아무래도 익숙한 언어를 선호하는 편이다. 그런데 이 툴이 사용이 최소 2GB 메모리를 필요로 한다. 이것 때문에 설치가 안되었다.  ( https://zulip.readthedocs.io/en/latest/production/requirements.html#requirements ). 내 개인 테스트 서버는 2CPU 1Memory 이다. 

 그래서 다시 시도한 툴은 mattermost( https://www.mattermost.org/ ) 이라는 툴이다. 이 툴은  Golang and React 을 사용했다. 이런 툴들은 android, ios, 웹, 맥, 윈도우 앱과 프로그램을 지원한다. (안드로이드 https://play.google.com/store/apps/details?id=com.mattermost.rn&hl=ko )

서버 주소 URL 만 알면 쉽게 설정할 수 있다. 

설치는https://docs.mattermost.com/guides/administrator.html#installing-mattermost  매뉴얼을 따라서 설치하면 어렵지 않다.  DB는 mysql, postgresql 모두 다 지원한다. 

속도는 내 서버가 안 좋아서 그런지 조금씩 느린게 느껴진다. 못 사용할 정도는 아니다. (내 서버는 좀 많은 것이 설치되어 있다. mysql, postgresql, odoo, django 서버, jupyter notebook 등등 상주하는 서비스가 좀 많다. ) 

 요즘 사내 리눅스 서버를 세팅하고 있다. 사내 리눅스 서버는 보통 오래된 PC로 모니터 없는 환경으로 사무실 구석탱이에 두기 마련이다. 이 PC의 경우 chromedriver 환경 세팅용이라서 xwindow 환경까지 세팅했다. (headless 환경을 세팅할 수도 있는데, 이 경우 디버깅할 때의 어려울 때문에 xwindows 환경과 remote desktop 환경을 구축했다. )
(이 환경 구축을 https://linuxconfig.org/ubuntu-remote-desktop-18-04-bionic-beaver-linux  를 참고 하면된다. 다만 컴퓨터를 끄고 자동으로 다시 이 화면에 접속하기 위해서는 Automatic Login https://linuxconfig.org/how-to-enable-automatic-login-on-ubuntu-18-04-bionic-beaver-linux 도 구축해야 한다. )

 이상하게 PC를 내 자리 옆에 두고 할 때는 잘 되었는데, 사무실 구석에 두니까 안되었다. 그러다 혹시 HDMI 단자 때문인가 하는 의심을 해서 모니터를 열결하지 않고 remote 환경에 접속해 보니 안되었다. 연결이 잘 되더라도 모니터 연결을 제거하면 remote 접속된 화면이 깨졌다. 

 검색해서 알아낸 것은 모니터가 없는 경우 가상모니터 환경을 세팅해야 remote desktop 으로 접속해도 잘 된다는 것이다. https://askubuntu.com/a/463000  이대로 세팅해서 재부팅 하니 잘 되었다. xserver-xorg-video-dummy 를 설치해서 모니터 설정을 수동으로 해주면 된다. 

추가 : 오늘 회사가서 다시 해보니 이렇게 세팅하고 나서는 다시 모니터를 연결하니 모니터 연결이 안되는 문제가 발생했다. 

추가 : 기존에는 SSH 을 접속해서 큰 문제가 없었는데, 회사 와이파이 비밀번호가 변경되면서 네트워크를 통해서도 접속할 수 없게 되면서 문제가 발생했다. Single 모드에 접속하려고 했는데 생각대로 안되었다.  뭔가 시스템을 고치는게 다시 세팅하는 것 보다 더 걸린 것 같아서 그냥 다시 설치했다. Chromedrive 환경이 필요하다면 Headless 환경이 더 좋은 선택인 것 같다. 아니면 기본으로 콘솔 로그인 화면 후에 XWindow에 진입하는 환경이 좋을 것 같다.