Stunning Garbanzo
open main menu
blog placeholder
Part of series: Home Server - DEFCON

Tactical Coding - Fade Out

/ 6 min read
Last updated:

배경

군대에서 개발 공부를 마음껏 할 수 있는 환경을 조성하기란 쉽지 않다. 가용한 컴퓨터의 기능이 제한되기 때문이다. 선택의 폭을 넓히고, 좀 더 많은 자원을 사용하기 위해 휴가를 이용해 홈 서버를 구축하기로 했다. image (전술코딩.jpg)

사지방

군대에서 컴퓨터(인터넷)를 사용하려면, 웬만하면 사이버지식정보방(사지방)을 이용해야 한다. image 예전에는 사지방이 인터넷에 접속할 수 있는 유일한 통로였다. 요새는 저녁 혹은 주말 자율활동 및 개인정비 시간에 핸드폰을 불출해줘 인터넷에는 자유롭게 접속할 수 있다.(덕분에 사지방에 사람이 별로 없다) 하지만, 인터넷을 이용해 무언가 공부를 하려면 사지방에 가는 것이 필수다. 특히 개발 공부는 더더욱.

三不可論

사지방의 컴퓨터는 인터넷에 접속할 수 있긴 하지만, 일반적으로 사회에서 사용하던 컴퓨터 환경과는 조금 다르다. 우선, 접속할 수 있는 웹사이트가 제한된다. 제한되는 사이트들의 대부분은 그 제한이 납득되지만, 가끔 납득되지 않는 사이트들도 존재한다.
둘째, 의도적으로 개발 행위를 금지해 놓았다. 사지방 컴퓨터의 자원을 이용해서, native하게 개발하는 것은 불가능하다. 가능하더라도 시도하지 않는 것이 개인 산상에 이로울 것으로 예상된다. 일단, 대부분의 포트를 막아놓았다. http나 https 연결을 위한 포트만 개방해 놓았다. 즉, ssh 접속이 어렵다. ssh을 위한 xterm 같은 프로그램을 까는 것도 어렵겠지만. 또한 cmd나 powershell등에도 접근하지 못한다. 컴퓨터의 세부 설정을 바꾸는 행위도 소프트웨어적으로 막아놓았기 때문에 개발을 하는 것은 불가능에 가깝다. 사실 가능한지 여부와 상관없이 군부대에서 인터넷이 연결된 장치로 native하게 개발을 하는 행위는 아무래도 위험해 보인다.
셋째, 껏다 켜면 전부 삭제된다 … 피시방이랑 똑같다.

원격 개발

상술한 제한 사항들로 인해 사지방에서 개발 공부를 하는 것은 사회의 그것과는 좀 다르다. 원격으로 개발 공부를 해야 한다. 원격 개발엔 다음과 같은 선택지들이 존재한다.

  • Github Codespace
  • Gitpod
  • Groom IDE
  • 클라우드(GCP, AWS, OCI) Code-Server
  • 개인 서버 Code-Server

Codespace나 Gitpod, Groom IDE와 같이, 개발 환경을 무료(어느 정도까지)로 제공해 주는 원격 개발 환경을 사용하는 것이 가장 편하다. 하지만, 사용할 수 있는 자원에 한계가 있고 접근 권한등에 제한이 있기 때문에 뭔가 규모있게 하기가 좀 불편하다.
클라우드에 code-server(웹을 이용해 원격으로 vscode 개발 환경을 제공해 주는 툴)을 띄워 원격 개발 환경을 스스로 구축하는 선택지도 존재한다. 하지만, 이 경우에도 비용이 좀 발생한다.
개인 서버를 만들어 원격 개발 환경을 구축할 수 도 있다. 마음대로 자원을 할당할 수 있고, 전기료랑 인터넷 비용만 발생해 큰 부담이 없다. 무엇보다도, 개인 서버를 갖는다는 것이 멋지다.
뭐든 내 맘대로 설치하고 실행하고 싶었기 때문에 개인 서버를 만들기로 하였다. 단순한 코딩만 하는 게 아니라, 컨테이너도 여러개 띄워보고 커널 빌드도 해보고 싶었기에, 제한이 있는 나머지 선택지는 배제하게 되었다. 더불어, 서버를 구축하면서 많은 것을 배울 수 있을 것 같았다.

Codespace

이 대신 잇몸 격으로 휴가 전까지는 github codespace를 사용하였다. 2코어에 16GB RAM memory를 제공받았다. 매 달 50코어시간의 무료 크레딧이 제공된다. PS 문제들만 간간히 풀었기에 충분하였다. 하지만, 뭔가 복잡한 작업을 해보려고 하니 조금씩 막혔다.