요즘 회사에서 웹서비스의 속도 향상을 위해 tunning 중이다.

전에 개발하는 것은 대부분  admin 만 개발하는 것이라 속도에 대해서 별다른 생각이 없었는데, 사용자 서비스 위주의 웹서비스도 필요하다보니 속도를 향상시키고 싶은 욕구가 생겼다. 그러다가 파이썬으로는 어쩔 수 없나 하는 생각이 들었다. 

https://www.techempower.com/benchmarks/ 

 

TechEmpower Web Framework Performance Comparison

Performance comparison of a wide spectrum of web application frameworks and platforms using community-contributed test implementations.

www.techempower.com

이 사이트에 보면 여러 서비스별 속도를 측정한 것이 보인다. 내가 전에 사용했던 django 그리고 요즘 사용하고 있는 flask 모두 좋은 점수는 아니다. 그러다 이 사이트에서 uvicorn, sanic 이라는 시스템을 발견했다. 이것도 파이썬인데 꽤 괜찮은 순위에 올라 있는 항목이 있었다. (물론 다른 것들에 비해서는 순위가 낮지만 파이썬 치고는 상위 랭크로 된 테스트들이 있었다.) 여기에 관심을 갖다보니 그래도 어느정도 매뉴얼이 있고 개발환경이 완성되어 보인 sanic 이라는데 관심이 생겼다. 

 비동기성을 이용한  방식인데, 이 방식으로 하려면 기존 개발 방식에서 많이 변경되어야 한다. 그래서 기존에 만든 회사 프로젝트로는 무리이고 그냥 내 개인 프로젝트에 적용해 보고 싶은 욕구가 생긴다.

 회사에 개발자는 나 혼자 인지라 서버 개발 외적으로도 해야 할 일이 생긴다. 오늘은 안드로이드 폰에서 특정 동작 제어를 하는 방법이 필요했다. 일반적으로 루팅을 하는 방법이 있지만 폰을 루팅하면 위험성도 있고(내가 안드로이드 개발자가 아니라서 이 쪽으로는 좀 약한 것 같다. ) 다시 폰을 사용하려면 언루팅 하기도 힘들어서 안 하는 하는 방법을 찾아 보았다. 

 첫번째로 생각한 것은 에뮬레이터로 동작 시키는 것이었는데, 이것도 뭔가 하려면 루팅이 필요한 것 같아서 패스 했다. 두번째로 생각한 방법은 실제 폰을 제어 하는 것인데 이 기술의 대부분은 원격제어을 이용하는 것이다. 보통 폰에서 PC를 제어하는 remote desktop이 많은데 역방향으로 제어 하는 원격제어도 찾으면 찾을 수 있다. (PC에서 폰 제어) 근데 다만 대부분 유료이다. 그리고 이게 된다고 해도 뭔가 PC 스크립트를 만드는 방법이 딱히 생각나지 않았다. 

그래서 검색을 더 해보고 찾은 것이 openstf (https://github.com/openstf/stf ) 이다. 이게 내가 생각한 것에 아주 가깝다. 우선 폰을 USB에 연결해 두고, Node 서버를 띄우면 웹브라우저에서 그 폰 화면 그대로 보인다. 그리고 마우스로 터치하면서 제어 할 수 있다. 

설치 방법은 https://dejavuqa.tistory.com/342  이 블로그에 너무 잘 나와서 패스한다. 

여기서 더 발전하면 nodejs 를 이용한 프로그램을 만들어 특정 이벤트(홈 버튼을 누른다든지, 특정 화면을 터치한다든지)를 발생 시킬 수 있다. 이 부분은 https://github.com/openstf/adbkit  과 https://github.com/openstf/adbkit-monkey 를 잘 이용하면 될 것 같다.

내 경우 home 버튼 누르는 예제를 실행시켜 보았는데 잘 동작했다.

 서비스가 안정적으로 동작 시키기 위해서는 뭔가 node 대몬 관리 프로그램을 잘 이용해 줘야 할 것 같긴 한다. nodejs 가 자주 다루는 플랫폼이 아닌지라 좀 연구가 필요 할 것 같다. 

 회사에서 zapier 를 많이 사용하는데, 이게 비용이 만만찮게 들고 있다. zapier 가 가지고 있는 가장 큰 장점은 비 개발자도 어느 정도 연동을 할 수 있다는 것이다. 생각같아서는 모든 것을 구현하자고 하고 싶지만 내가 하나 있는 개발자 인데 나도 없을때 유지보수가 안되기 때문에 개발하자가 하기가 좀 그렇다. 

 어째든 비개발자가 연동만으로 슬랙이나 google sheet 로 정보를 쏠 수 있는 툴을 알아보고 있다. 물론 직접 설치가 가능한 오픈소스툴을 찾고 있다. (돈 주면 이런 툴들 많다. )

 뭔가 좀 많이 아쉽긴 하지만 그대로 조금 가깝다고 느껴지는 툴은 nodered(https://nodered.org/ ) 라는 툴이다. 선으로 뭔가 이어 가면서 연결한다는 느낌이 있어 그래도 비개발자들이 보기에 어느정도 논리적인 것이 GUI 화면에 보이기 때문에 할 만 할 것 같긴 하다. (물론 나는 디지털, 아날로그 하드웨어를 하다보니 pspice 같은 아날로그 회로 툴에 익숙하다 보니 이 논리적인 부분이 익숙한점은 있다.) 다만 zapier  처럼 미리 연동된 부분이 좀 많이 부족한 것이 아쉽다. 

 

 잘 이용하면 이론적으로는 이걸로 웹서버도 만들고 DB에 데이터도 저장 할 수 있을 것 같다. (근데 개발자 입장에서는 이런 것 보다 코드로 짜는게 더 쉬울 것 같기는 하다.)