마법의 소라고동님 군대에서 백엔드 공부를 해도 될까요??
"안 돼"
안돼. 하지마.
라고 말하고 싶지만 기어코 군대에서 웹 개발을 공부하고 싶어서 특히 백엔드를 공부하고 싶어 이 글을 들어온 당신을 위해 써보겠습니다.
2022년 8월 22일, 가만히 있어도 땀이 뻘뻘 나던 한 여름에 머리를 빡빡 밀고 경남 진주로 향한 한 컴공생이 있었습니다.
그 컴공생은 꿈이 있었는데 바로 군 생활 1년 반을 그냥 허투루 날리지 않고 싶었다는 거였어요.
그래서 자기계발 여건이 비교적 보장된다는 공군 에 지원했는데,
집에서 가까운 자대를 고르다보니 수도권에 있는 소규모 부대 에 가게 되었답니다!
(공군은 훈련소 성적으로 특기와 자대를 골라서 간다는 사실!)
근데 이런거 진짜 있긴 한가
요즘은 부대 안에 PC방이 있는 부대도 있다는 말을 들어서 기대를 하고 자대에 도착한 컴공생은 화들짝 놀랄 수 밖에 없었어요.
가장 비슷해보이는 사진을 들고 왔는데 사실 이 사진보다 더 낡고 안 좋았다.
작은 부대라 그런지 페이스북에서 나보던 사지방 시설을 보고, 여기서 공부를 할 수 있으려나 싶었답니다
당연히 그 컴공생은 저고요, 그래도 이미 도착한 자대를 바꿀 수는 없고 사지방 빼고는 나름 시설은 괜찮았답니다..? 나름?
그리고 사지방 시설이 안 좋아서 그런지 자리는 항상 넘쳐났고, 어떻게 잘만 하면 공부를 할 수 있겠다 싶어서 열심히 찾아봤습니다.
그리고 1년 반 동안 공부만 한거 치곤 초라하지만 그래도 군대에서 백준 플레티넘 찍기, 입대 전 하던 장고 프로젝트 리팩토링, JAVA, spring boot, JPA 공부 시작, 토이 프로젝트 개발 및 배포 정도의 결과를 얻어갔습니다.
그리고 그 과정에서 얻은 결과와 후기를 블로그에 남겨보려고 합니다.
사지방에서 백엔드 공부를 하고 싶어요.
챗지피티도 하지 말라고 한다.
사실 백엔드 공부를 그리 추천하고 싶지는 않습니다. 사실 군대에서 공부하기 편한 분야가 어디 있겠냐 싶지만
자격증 공부, 제 2 외국어 , 하다못에 알고리즘이나 코딩 테스트 준비가 훨씬 쉽지, 웹개발을 공부하기엔 상당히 불편한 환경입니다.
대부분의 부대는 아직도 저희 부대처럼 저사양 컴퓨터 + 하모니카 OS 의 기막힌 조합으로 구성된 사지방을 사용할 것입니다.
이 환경에서 웹개발을 시도한다면,
웹페이지 4~5개만 켜도 멈춰버리는 기적의 컴퓨터 사양 (Figma나 유튜브라도 키면 2개만 넘어도 피를 토하며 멈춘다)
왜인지 사람이 몰리는 시간엔 로그인 조차 안되는 무친 OS
정신나간 국방부 사지방 유해 사이트 정책
등으로 안그래도 힘든 군생활동안 너덜너덜해진 멘탈이 산산조각날 것입니다.
특히 3번 유해사이트 정책 이 사람을 진짜 힘들게 하는데, 사실 유해 사이트 한두번 들어 간다고 크게 문제가 되진 않습니다.
(후술할 이유 때문에 실수로 몇 번 들어가봤는데 1도 문제 없이 전역했습니다. 토토 같은 불법 사이트만 안들어가면 괜찮지 않을까요..?)
근데 들어가는 순간 경고가 뜨면서 실행중이던 모든 웹 페이지가 바로 닫힙니다.
당연히 저장을 하지 않은 내용이 있다면 전부 날아가고, 크롬 기능으로 복원을 시키면 유해 사이트도 같이 복원되서(이게 진짜 골때린다)
복원 → 강제 종료 → 복원 → 강제종료를 반복하는데 이게 진짜 사람을 개빡치게 미치게 합니다.
유해 사이트 탐지와 강제 종료에 약간 시간이 있어서 복원 되자마자 문제가 된 사이트를 빠르게 끄면 복구가 가능하긴 한데,
그마저도 결국 원래 켜놨던 웹 사이트로 리다이렉트 시켜주는 선에서 끝이라 온라인으로 작업하던건 저장 안하면 다 사라집니다.
그럼 유해 사이트를 안들어 가면 되는거 아닌가요..?
그러기엔 진짜 상상도 못하는 것들이 유해 사이트로 지정이 되어 있습니다.
예를 들면
네이버 스포츠는 되지만 상세 종목 채널에서 e스포츠를 누르면 거긴 유해 사이트
주소창에 youtube.com 을 쳐서 나오는건 유해 사이트. (근데 구글에 "유튜브" 검색해서 들어가는건 됨 ),
티스토리나 VELOG가 아닌 대부분의 블로그 등등
사지방의 개발 환경은 로컬 개발 환경과 다르기 때문에
강의 보고 코드를 그대로 따라치기만 했는데도 정말 수많은 원인을 알 수 없는 오류를 맞이할 것입니다.
그럴때 당연히 구글에 에러 메세지와 원인을 검색해보고
위의 사진 맨 위에 나온 것 같은 medium 도메인의 블로그를 아무 생각 없이 누르면..?
강제종료 → 복원 → 강제 종료 → 복원 → 강제종료 끼아아아아악
그리고 잼민이 시절 컴퓨터실에 몰래 깔아놨던 마인크래프트 다음 주 수업시간에 다시 오면 다 사라지듯
컴퓨터 끄는 순간 저장한 모든 정보가 사라집니다. 애초에 하모니카 OS 컴퓨터는 파일 다운로드도 대부분 막혀있습니다.
사실 이 부분은 우회하는 방법이 없는 건 아니지만 불법이라고 알고 있으니 시도하지 않는 것을 추천드립니다.
애초에 보안 규정이라고 만들어 놓은건데 그걸 우회하면 당연히 문제가 생기지 않을까?
혹시 시도해보고 싶은 용감한 사람을 위해 정리된 글을 가져와 봤다.
https://uzzam.dev/15
군대 사지방에서 개발하는 방법들
이 글은 2020년 6월 20일에 첫 작성되었습니다. (https://github.com/shs395/shs395.github.io/blob/master/content/army/how-to-development-in-army/index.md) 사지방 컴퓨터의 운영체제가 하모니카OS가 아닌 win7인 경우에 해당
uzzam.dev
그렇다면 소스코드는 깃허브에 저장한다고 쳐도 IDE를 저장하는건 불가능합니다.
하지만 이런 우리에게도 온라인 IDE라는 방법이 있습니다.
그래서 온라인 IDE가 뭔데요
온라인 IDE는 된다신다 만세
별도의 구축 없이 웹 브라우저에서 IDE 기능을 가진 통합 개발 환경을 의미합니다.
즉 웹에서 돌아가는 온라인 코드 편집, 실행기 라고 생각하면 될 것 같습니다.
우리는 다음과 같은 조건을 만족하는 온라인 IDE를 찾아야하는데
가격
성능
사용 난이도
문제는 이걸 만족하는 온라인 IDE를 찾기 매우 힘듭니다. . (특히 1번과 2번 조건이 양립하는게 거의 불가능)
그리고 제일 큰 문제는 노트북 무게가 그램 단위로 나오는 세상에서 온라인 IDE로 개발을 하는 사람이 세상에 몇이나 있을까요..?
개발 환경에 대한 리소스가 턱없이 부족합니다.
검색을 해봐도 자세한 설명이 있는 글들이 거의 없습니다. 이 글을 쓰기로 마음 먹은 이유이기도 합니다.
백엔드 개발을 한다는 가정하에 가장 중요한건 웹 서버를 와 DB를 돌릴 수 있는 서버 리소스가 제공되는지 여부인 것 같습니다.
몇몇 온라인 IDE는 단순히 실행 결과 정도만 보여주고 웹 개발 프레임 워크나 DB를 설치하고 사용할 리소스를 제공하지 않습니다.
그래서 백엔드 웹 개발을 공부한다는 기준으로 후보군은 이 정도인 것 같습니다.
구름 ide
github codespace
code-server + GCP
code-anywhere
1. 구름 IDE
https://www.goorm.io
구름HOME
구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.
www.goorm.io
결론부터 이야기하면 제가 군생활동안 사용하기로 결정했던 웹 IDE입니다.
ubuntu os의 aws ec2와 도커 기반 컨테이너를 이용해 만들어진 서비스입니다.
가장 큰 장점은 한글 지원 + 무료 이용 가능, 꽤나 넉넉한 저장공간, 웹 기반 프레임워크 기본 템플릿 제공 등이 있습니다.
또한 예전엔 학생 요금제를 사용하면 월 6~7천원대에 24시간 컨테이너 실행이 가능했고, cpu, ram 사양도 쓸만할 정도 (aws freetier 이상)로 올라가서 웹 서버 배포까지 가능했다는 매우 큰 장점이 있었지만 24년 4월부로 요금제가 바뀌고 불가능해졌습니다.
(불가능은 아니지만 에전과 같은 사양으로 24시간 돌리면 가격이 2배 이상으로 나올듯 합니다)
그리고 한글 지원이 된다는 점이, 안 그래도 적은 리소스의 웹 IDE 생태계에서 꽤나 이점이라고 생각합니다.
하지만 단점도 뚜렷한데
기본 제공 템플릿 버전 업데이트가 매우매우 느림 (spring boot 2.0.1 제공중 ㅋㅋ)
도커 기반 환경이라 프로젝트에서 docker 설치 밑 사용이 보안상 이슈로 제한됨
가격 정책 변경으로 예전 처럼 가성비 있게 사용할 수 없음
IDE 자체의 기능이 적음
vs code 같은 외부 extension 설치 안됨
자동완성 기능 매후 미흡 (java를 쓴다면 패키지 직접 찾아서 import 써줘야함)
프로젝트 실행하려면 터미널 명령어로 실행시켜야함(gradle build && java -jar ..) -> 빌드에 시간 오래 걸림
24년 5월까지 군생활을 했던 사람으로서 가성비에 한글 지원이라는 두 가지 장점을 보고 사용했지만,
기존에 웹 개발을 공부했던 경험이 있다면 (특히 자바, spring boot) 후술할 다른 IDE를 먼저 시도해 보는 것도 좋은 것 같습니다.
구름 IDE 사용방법과 개발환경 설정은 쉬운 편이고, python django, fastApi, flask 등을 사용하거나(빌드 시간 짧음),
새로운 프레임워크에 대해 공부해보고 싶다면 옛날 버전이긴 하지만 템플릿을 제공해주는 구름 IDE도 나쁘지 않을 수 있다고 생각합니다.
2. Github Codespace
https://github.com/features/codespaces
Secure development made simple
GitHub Codespaces gets you up and coding faster with fully configured, secure cloud development environments native to GitHub.
github.com
사실 제대로 안 사용해봐서 잘 모른다.
처음에 Goorm IDE를 쓰며 JPA 강의를 듣다가 import 문 직접 찾아서 입력하는거에 지쳐서
다른 IDE를 찾아보던 중 잠깐 사용해본 IDE입니다.
일단 에디터가 vs code 기반인 건 큰 장점입니다.
잠깐 쓰는데도 자동완성, 빠른 빌드&실행 툴 덕분에 마음이 편안했습니다.
또한 spring boot를 포함한 대부분의 웹 프레임워크 기본 템플릿을 제공하며,
기존에 진행하던 프로젝트가 있다면 github 리포지토리에 연결해 이어서 작업할 수 있습니다. (사실 이건 구름도 가능)
단점은 역시 가격이 아닐까 싶습니다.
https://docs.github.com/ko/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces
GitHub Codespaces 청구 관련 정보 - GitHub Docs
GitHub Codespaces을(를) 사용하는 비용과 GitHub 개인 계정 포함된 월별 사용량 할당량에 대해 알아봅니다.
docs.github.com
개인 계정의 경우 매월 120시간의 무료 사용량이 존재하지만 1 코어 기준으로 120시간이므로
2코어, 4코어 Vm을 생성한다면 60시간, 30시간만 무료로 사용 가능합니다.
2코어 기준 하루 3시간 사용한다고 하면 20일간 사용이 가능합니다만,
주말에 조금 더 오래 공부 한다고 치면 사실상 15일 정도만 무료로 사용이 가능합니다.
그 이후엔 2코어 기준으로 시간당 0.18$의 사용료를 받습니다. 120시간을 더 사용한다는 가정하에 한달 21.6달러가 나오는데
물론 공부를 그렇게 열심히 하지 않을 사람이라면 저 정도는 아니겠지만, 부담없이 마음껏 쓸만한 가격은 아니라고 생각합니다.
학생 계정 인증을 받는다면 180시간까지 사용이 가능하니 휴학후 입대하신 분들은 참고해보시면 좋을 듯 합니다.
학생 계정 인증도 받고 평일 하루 2시간, 주말 6시간씩 사용하면 2코어 컴퓨터 기준 4주간 무료로 사용이 가능하다는 계산이 나옵니다.
이 정도면 사용해볼만 한 것 같습니다.
3. Code Server + GCP(AWS )
Code Server 역시 vs code 환경에서 돌아가는 웹 IDE입니다.
하지만 code server는 리소스를 직접 제공해주지 않으므로 VM을 직접 세팅해야 합니다 .
직접 gcp나 aws ec2등의 클라우드 컴퓨팅 서비스를 이용해 리소스를 빌리고, 개발환경을 세팅한 후 code server에 연결해야 합니다.
세팅하다가 막혀서 때려 치웠는데, aws나 gcp에 대한 기본 지식이 있는 사람이라면 괜찮은 선택지라고 생각합니다.
(근데 이상하게 구글링해보면 aws ec2보다는 gcp와 더 많이 쓰는데 그 이유는 잘 모르겠습니다.)
이건 직접 써보진 않았어서 다른 소개글을 가져와봤습니다.
물론 react나 vue를 이용한 개발을 다루고 있지만, gcp 환경 설정, 개발 환경 세팅 과정에서 참고하면 좋을 것 같습니다.
https://velog.io/@2wndrhs/code-server로-사지방에서-코딩하기-1-GCP-인스턴스-생성
code-server로 사지방에서 코딩하기 - 1 (GCP 인스턴스 생성)
code-server로 사지방에서 코딩하기
velog.io
물론 사지방에서 spring boot를 공부하고 싶다면 프로젝트를 서버에 설치해 시작하는게 가능할 지 모르겠습니다.
기존에 작업하던 프로젝트가 존재한다면 github에 저장된거 clone 해오면 되겠지만, 새로 시작하고 싶다면..
구글링해봐도 대부분 자료들이 이미 만들어진 spring boot 프로젝트를 vm에서 배포하는 방법만 다루고 있습니다.
spring boot 프로젝트 생성을 찾아보면 IntelliJ 기반으로 start.spring.io에 들어가서 다운 받아 실행 하는 글이 99프로이지만,
우리는 그럴 수가 없습니다.
터미널로 java , DB 설치 후 밑에 글을 참고하면 될지도..? 혹은 wget을 잘 이용하면 가능하지 않을까 싶습니다.
(안해봐서 모르겠지만 응원합니다.)
https://blog.hyunsub.kim/Spring/Spring-with-Terminal/
Terminal로 Spring Boot 다루기
IntelliJ나 eclipse와 같은 IDE의 도움을 받지 않고 Spring을 빌드, 실행, 테스트 하는 방법을 알아보겠습니다. Maven과 Gradle 모두 다루고 있습니다.
blog.hyunsub.kim
4. Code Anywhere
https://codeanywhere.com
Cloud IDE · Online Code Editor · Codeanywhere
Save time by deploying a development environment in seconds. Collaborate, code, learn, build, and run your projects directly from your browser.
codeanywhere.com
이건 블로그 쓰려고 찾아보다 발견했습니다.
1년 기준 한달 7.5달러에 150시간 이용 가능하다는데, 그냥 code space 쓸 것 같긴 합니다만
관심이 있다면 한 번 찾아보면 좋을 듯 합니다.
마무리하며
사실 군대에선 백엔드가 아니라 알고리즘, CS지식 이론 공부, 프론트엔드 개발을 공부하는게 정신건강에 크게 이로울거라 생각합니다.
하지만 백엔드를 공부하고 싶다면, 혹은 백엔드 공부를 하다가 입대를 했다면 군대라서 힘들겠지.. 라는 마음만 먹기보단 시도해보는 것도 추천합니다. (아무것도 안하고 누워서 롤토체스나 하는 것 보다 백배 천배 나을겁니다.)
그리고 오히려 IDE의 기능에 익숙해져 공부하지 못하던 터미널 사용법, 리눅스 OS, 듣도보도 못한 오류 해결하기 등에 대한 능력을 키울 수 있는 기회이기도 합니다.
다음 글에선 구름 IDE를 기준으로 웹 IDE를 이용한 개발 환경 설정 팁 및 참고 하면 좋은 내용들에 대해 써보겠습니다.
<참고 글>
https://neurowhai.tistory.com/192
사이버 지식 정보방(사지방) 개발 환경
안녕하세요! 오늘은 제가 사지방에서 개발을 하기 위해 어떤 도구들을 이용했는지 적어보고자 합니다. 다만 부대마다 사지방 환경이 다르므로 적당히 걸러서 들으시면 되겠습니다. 또한 개발이
neurowhai.tistory.com