사실 군대에서 개발 공부를 하는건 사실 좋은 생각은 아닌 듯 하지만

1년 9개월을 내다 버리기 싫으면 뭐라도 해야만 합니다.

 

저는 군대에서 보내야 하는 1년 반 이상의 시간을 그냥 날려버린다면 너무 억울할 것 같다고 생각했습니다.

그래서 뭐라도 얻어가는게 있으면 좋겠다 라고 생각했고, 자기계발 여건이 좋다고 들은 공군에 지원했죠.

 

아무래도 훈련소에서부터 다양한 사람들을 만나면서 공군에 오길 잘했다는 생각이 들었습니다.

(평생 한 번도 못 봤던 서울대생들이랑 카이스트 학생들을 군대에서 다 본 것 같아요.)

 

그리고 그 사람들과 이야기를 나눠보면서, 그 사람들끼리 이야기 나누는 걸 들으면서

지금까지 해왔던 노력과, 결과의 격차가 많이 느껴졌습니다.

 

그리고 오히려 군대가 기회가 될 수 있다고 생각했습니다.

군대에서 만큼은 밖에서 어떤 사람이었든 같은 조건에서 같은 시간을 보내야하니까요.

지금까지 벌어졌던 격차를 좁힐 수 있는 유일한 기회일거라 생각했고,

그래서 처음 한 6개월간은 자기계발에 엄청 매진했던 기억이 납니다. (물론 해야할 일부터 열심히 하고요)

 

또 SNS, 깃허브 등을 보면 군대에 오지 않고 밖에 있던 동기들과 격차가 벌어지는 걸 느끼고,

더 불안함을 느껴서 그랬을지도 모릅니다.

 

아침에 일어나자마자 점호 끝나고 아침 먹고 독서실로 가서 영어 단어를 외우다가 출근을 했습니다.

오후 일과가 끝나자마자 체련시간에 체단실로가서 운동을 하고

저녁 먹고 씻고 개인정비시간이 되자마자 사지방으로 가서 3시간 내내 코딩 공부를 했습니다.

청소와 저녁 점호가 끝나곤 자기전까지 책을 읽었습니다.

 

자기계발할 시간이 사라지는게 싫어서 한 달 두번씩 주어지는 평일 외출도 거진 안 나갔고,

코로나 걸려서 격리되면 공부 못하니까, 몸이 아파도 숨기기까지 했었습니다.

 

결국 이렇게 2,3달 정도 살다보니까 몸도 다치고 마음도 더 힘들어졌습니다.

 

뭐든지 적당히가 중요하다고 생각합니다. 다 때려치고 자기계발만 하는건 좋은 생각이 아닙니다.

군대에서 무언가를 얻어갈 수 있다는건 정말 좋은 일이지만,

여유 시간을 자기계발에만 쓰려는건 미친짓입니다. 오래 하지도 못하고요.

 

그 안에서 찾을 수 있는 즐거움과 행복을 틈틈히 찾아보시길 추천합니다.

군대라고 해도 24시간 내내 힘들기만 하진 않습니다.

동기들과 추억도 쌓고 그 안에서 할 수 있는 건강한 취미생활도 찾아보는걸 추천드립니다.

 

전역 이후에 이어갈 수 있는 취미생활이면 더 좋습니다.

전역까지 남은 시간동안 그걸로 목표를 세울 수 있게되는데, 목표가 생기면 시간도 더 잘 갔습니다.

 

(저는 부대에 있는 교회 찬양팀에 들어가서 피아노랑 기타 연습을 하는 취미가 생겼습니다.

전역하고 학교 밴드 동아리에 들어가고 싶다는 목표가 생기니까 열심히 하게 되더라고요)

 

그래도 자기계발을 아예 안하는 것보단 당연히 하는게 좋겠죠.

저는 저에게 주어진 1년 9개월의 시간을 이렇게 사용했습니다.

 

저는 훈련소, 특기학교 + 자대와서 적응하는데 3달 정도 걸렸습니다.

 

입대 3달 뒤부터 알고리즘 공부를 시작해 2~3개월 정도 했습니다.

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - 예스24

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - 예스24

나동빈 저자의 유튜브 라이브 방송 https://www.youtube.com/c/dongbinnaIT 취준생이라면 누구나 입사하고 싶은 카카오 · 삼성전자 · 네이버 · 라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생

m.yes24.com

휴가 때 이 책 하나 사서 일과 시간 남는 시간에 정독하고 일과 끝나고 사지방에서 문제를 풀었습니다.

(물론 좋은 분위기의 부대에 일이 없는 부서라서 가능했던 일이었습니다.)

 

백준 골드5였던 백준 티어가 플레티넘이 되고 난 후부턴 개발 공부에 다시 시간을 쓰고 싶어 알아봤습니다.

개발 공부에 사용할 수 있는 온라인 ide 찾기에 1~2달 정도 쓴거 같네요.

이땐 입대 전에 장고로 만든 프로젝트를 리팩토링 하면서 온라인 IDE 사용법에 익숙해졌습니다.

 

그 이후엔 백엔드에 대해 더 알아보고 싶어졌고 spring을 배워보고 싶어

영한선생님 JPA와 스프링 강의를 듣는데 3~4개월 정도 썼습니다.

 

Java의 정석 - 예스24

 

Java의 정석 - 예스24

최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아

m.yes24.com

그리고 JAVA 기본기가 부족하다는 생각이 들어 java의 정석을 정독하고 정리해봤습니다.

 

그리고 입대전에 만들었던 기존 장고 프로젝트를 spring boot로 리팩토링해보며 스프링과 JPA 공부를 했습니다.

그리고 휴가를 벌어야 해서 e러닝과 자격증 공부도 했습니다.

여기에 합쳐서 3~4달 정도 사용한 것 같네요.

 

그리고 그걸 이어서 후임으로 들어온 프론트엔드 개발자와 동기 디자이너와 함께 팀 프로젝트를 진행했습니다.

 

배포까지 했더니 군생활이 끝나더라고요.

저의 군생활 코딩 공부는 이렇게 진행됐습니다.

 

추천을 드리자면 자기계발비로 개발 책 사서 틈틈히 읽어보는걸 추천드립니다.

1년 12만원씩 지원 나오는데 평소에 돈 주고 사기 아까웠던 개발 책들 자기계발비로 잔뜩 사고 지금도 읽고 있습니다.

(위에 나온 자바의 정석과 이것이 코딩테스트다도 자기계발비로 샀습니다.)

 

그리고 개발공부 말고도 자격증 공부도 추천드리는 자기계발 중 하나입니다.

공군 기준으로 정보처리기능사(산업기사) + SQLD + 리눅스마스터 이렇게 3개 따면 휴가 이틀이 나옵니다.

근데 이 3가지가 내용이 겹치는 부분들이 있고, 기본 지식이 조금만 있으면 편하게 딸 수 있는 자격증들입니다.

저는 이 자격증이랑 군 e러닝으로만 포상휴가 6일을 벌었습니다.

 

주변에선 공무원 시험, 수능 준비 같은 것도 하던데, 수험 생활은 정말 힘들어 보였습니다.

굳은 결의로 하시겠다면 말리진 않겠습니다.

하지만 시간도 남는데 해볼까 라는 마음으로 하는 사람은 99프로 다 망했던 것 같습니다.

이건 하려면 정말 열심히 할 각오로 하셔야 할 것 같습니다.

애초에 밖에서 하는 수험공부도 좋은 결과가 못 나온 사람들이 많은데, 군대에서 하는건 정말 큰 노력이 필요합니다.

 

그리고 적당한 운동도 아주 좋은 자기계발입니다.

앞서 말한 전역 이후에도 이어갈 수 있는 취미생활이라고도 볼 수 있고,

군대에서 만큼 규칙적으로 살면서 운동할 환경이 주어지는 곳이 또 없습니다.

다만 다치지 않는 선에서 하시길 응원합니다.

(제가 본 군생활 부상의 90프로 이상은 풋살이랑 헬스하다 일어났습니다)

 

그리고 또 군생활 팁을 드리면 휴가때 공군 호텔, 육군 호텔 잘 사용해 보는 걸 추천드립니다.

공군 호텔은 부산에 있고 직접 가봤는데, 시설이 엄청 좋은 편은 아니지만

가성비 좋은 해운대 오션 뷰 호텔이라 괜찮았습니다.

 

육군호텔은 23년 3월에 용산에 지어졌다는데, 직접 가보진 않았지만 후기가 다들 정말 좋고

육군 현역 병, 타군 현역 병 순으로 할인된 가격에 예약이 가능하니까 휴가때 가보는 것도 추천드립니다.

 

그 외에도 아웃백, 영화관 놀이공원 등도 할인이 많은데 찾아보고 휴가때마다 도장깨기 하는 것도 추천합니다.

근데 롯데월드, 영화관 같은건 대학생 할인, 카드 할인 같은게 군인 할인보다 싼 경우 많으니까 알아보고 가세요.

 

나라 지키느라 고생 많으십니다. 25년도 26년도 결국 반드시 옵니다.

전역하는 그날까지 오늘도 여러분들을 응원합니다.

화이팅.

그냥 참고 하라고 ㅋㅋㅋ

라고 하면 안되겠죠??

 

온라인 IDE를 잘 사용하는 법, 사용하는 팁 그리고 특히 스프링 부트를 IDE로 돌리기 위해 참고할 점들에 대해 알아보겠습니다.

 

전편에서 말했듯 저는는 구름 IDE를 사용해서 스프링 부트 위주로 공부를 했습니다.

그래서 아마도 구름 IDE에 기준이 맞춰져 있을 텐데, 다른 IDE를 고른 사람들은.. 뭐 아쉬운거죠

 

1. 프로젝트 시작하기

1-1. 환경설정 하는 법

사실 이건 예전에 쓴 글이 있긴 한데 참고하면 좋을 것 같습니다.

사지방에서 Spring boot 공부하기 #1 - 개발환경 설정

 

사지방에서 Spring boot 공부하기 #1 - 개발환경 설정

인프런 김영한 님의 "스프링 입문 - 코드로 배우는 스프링부트, 웹 MVC, DB 접근" 기술 강의를 듣고 정리해보려 합니다. 개발환경 - GOORM IDE 1. 구름 IDE에서 컨테이너 생성 구름 IDE 접속 -> 새 컨테이

thankyou-ddabong-dochi.tistory.com

 

나는 스프링 말고 Django 같은거 쓰고 싶다! 그러면 이 글을 봅시다.

https://thankyou-ddabong-dochi.tistory.com/66

 

사지방에서 웹 백엔드 공부하기 #1 개발환경 설정 (Goorm IDE)

입대한지 벌써 6개월차에 접어드는 지금 맨 처음 입대할때의 목표를 다시 살펴봤다. 1. 꾸준히 운동하기 2. 코딩 공부하기 ( 백준 플레찍기 ) 3. 영어 공부하기 1은 하고 있고 2 번 목표는 생각보다

thankyou-ddabong-dochi.tistory.com

 

다만 1년 정도 전에 쓴 글이므로 업데이트를 좀 해보자면 보통 스프링 공부를 시작할 때 영한 선생님 강의를 많이 듣는데,

영한 선생님의 스프링 입문 강의에선 h2를 설치한 이후 Server모드를 이용해 진행합니다.

 

그러나 아직 리눅스에 익숙하지 못해 wget도 몰라서 h2를 설치하지 못했던 저는

goorm ide에서 기본으로 제공해주는 MySQL을 사용하고  phpmyadmin을 설치하고 접속해 db를 확인했고,

위의 글도 그 방법을 소개합니다.

 

나중에 안 사실이지만 spring boot는 간단한 설정으로 h2 database를 설치 없이 사용할 수 있도록 지원해줍니다.

h2를 사용하면 phpmyadmin을 설치할 필요도 없이 h2-console을 편하게 db 내용을 확인할 수 있습니다.

H2가 뭐죠?

java 기반 오픈 소스 RDBMS이다. 다음과 같은 주요 기능을 가집니다

  • 매우 빠름, 오픈 소스, JDBC API 지원
  • 두가지 연결 모드(Embedded, Server) 제공, 디스크 혹은 메모리 기반 데이터 베이스
  • 브라우저 기반 콘솔 어플리케이션 제공
  • 2.5MB jar 파일 정도의 작은 리소스 사용

두 가지 연결 모드에 대해 더 알아보면

Embedded 모드와 Server(Remote)모드의 메모리 구조

1. Embedded mode

H2 DB를 사용할 어플리케션의 JVM 환경 내에서 실행시킵니다.

가장 빠르고 간단한 연결 모드이지만 DB를 하나의 어플리케이션 내에서만 접속할 수 있습니다.

스프링 부트를 사용할 경우 H2를 다운로드 하지 않아도 됩니다.

 

2. Server mode

H2 DB를 어플리케이션이 원격으로 연결해 사용합니다. (Remote or Client/Mode 모드라고도 불립니다.)

모든 데이터 통신이 TCP/IP 프로토콜을 통해 전달되므로 Embedded 모드보다 속도가 느립니다.

하지만 많은 어플리케이션이 이 서버를 통해 동시에 데이터베이스와 연결할 수 있습니다.

H2를 다운받은후 터미널을 통해 별도로 실행시켜줘야 합니다.

 

그리고 특정한 상황(빠른 프로토타입 제작, 테스트, 읽기 전용 데이터) 등 데이터의 영구 보존이 필요하지 않은 경우

in-memory DB를 사용할 수 있습니다.

이 경우 파일 시스템이나 네트워크를 사용하지 않고, 어플리케이션 내부에서만 데이터를 보존합니다.

따라서 어플리케이션을 재실행하면 데이터가 삭제됩니다.

 

물론 프로젝트 테스트용 데이터 규모가 크거나, 데이터를 다른 사람들과 공유해야하거나, 실사용을 염두에 두고 있다거나... 하다면

DB 설치 및 세팅도 해보면 좋겠지만, 혼자 강의 듣고 따라하기, 사지방에서 프로젝트 개발하기 정도의 용도라면 h2 사용을 추천합니다.

 

개발시에는 H2를 따로 설치할 필요가 없는 Embedded mode, 테스트시에는 빠른 연결을 위한 in-memory 모드를 사용하길 추천합니다.

 

설정 방법에 대해선 공식문서와 아래 블로그를 참고하면 좋을 듯 합니다.

https://h2database.com/html/cheatSheet.html

 

H2 Database Engine

Using H2 Documentation Reference: SQL grammar, functions, data types, tools, API Features: fulltext search, encryption, read-only (zip/jar), CSV, auto-reconnect, triggers, user functions Embedded jdbc:h2:~/test 'test' in the user home directory jdbc:h2:/da

h2database.com

https://velog.io/@jinny-l/H2-DB의-3가지-모드와-사용법-Server-Mode-Embedded-Mode-In-Memory-Mode

 

H2 DB의 3가지 모드와 사용법 - Server Mode, Embedded Mode, In-Memory Mode

💾 H2 DB H2 DB는 3가지 모드가 있다. 각 모드 별 URL이나 커넥션 풀 등 관련 상세 내용은 공식 문서에서 확인 가능하다. 본글에서는 3가지 모드와 사용법에 대해 공부한 내용을 정리했다. > H2 DB의 3

velog.io

 

1-2. 빌드 속도 높이기

터미널에서 명령어를 통해 빌드를 해야 하는 우리의 구름 IDE는 기가 막히게 느린 빌드, 실행 속도를 체감할 수 있습니다.

Django의 경우는 Python을 사용하기 때문에 따로 빌드후 실행할 필요가 없지만,

스프링은 이런 저런 라이브러리를 추가하고, 프로젝트 규모가 커질 수록 빌드하는데 시간이 오래 걸렸습니다.

(나중가면 빌드 한 번에 2분, 실행 한 번에 2분이 걸리는 미칠듯한 속도를 보여줍니다)

스프링 강의 같은거 보면 인텔리제이에 뭐 어쩌구 저쩌구 설치하더니 버튼 하나 딸깍 누르면 실행되던데,

구름 IDE는 실행 버튼 누르면 이상한 터미널이 하나 더 나오더니 강의 멈춰놓고 2분씩 기다려야하는데 그냥 정신이 아득해집니다.

 

프로젝트 하나 실행하는데 이렇게 오래 걸리는 이유에 대해 알고 싶다면면

Spring Boot 프로젝트에서 사용하는 빌드 도구인 gradle에 대해 알아야합니다.

 

Gradle이란?

오픈 소스 빌드 자동화 도구

빌드, jar 파일 만들기, 테스트와 같은 과정을 자동화 해주는 빌드 도구입니다.

 

우리의 goorm ide도 스프링 부트 프로젝트를 만들때 gradle을 사용하도록 설정할 수 있습니다.

그리고 최근 나오는 대부분의 강의, 자료들은 빌드 도구로 gradle을 사용하는 추세입니다.

 

goorm ide의 gradle 프로젝트에서 위의 사진의 실행 버튼을 누르면 다음과 같은 명령을 실행합니다.

gradle build && java -jar ${java.set.build.path}libs/*.jar

 

gradle build를 통해 jar 파일을 만들어 내고, 만든 jar 파일을 실행해 스프링 어플리케이션을 실행하는 명령어입니다.

그런데 우리의 구름 IDE의 스프링부트 프로젝트는 java8과 스프링부트 2.0.1 을 기본 버전으로 하고 있습니다.

 

최근 나오는 대부분의 강의, 자료들과 버전이 맞지 않으므로 업그레이드를 해줘야하는데,

저 실행 버튼을 사용하려면 gradle도 스프링 부트 버전에 맞도록 다시 설치하고 설정해야 합니다.

 

그래서 공식문서는 gradle wrapper를 이용해 빌드하는 것을 추천하고 있습니다.

gradle wrapper #gradle/wrapper 폴더 생성(gradle-wrapper.jar, gradle-wrapper.properties)
./gradlew build #gradle wrapper 사용해 빌드

gradle wrapper 명령어를 이용하면 gradle/wrapper 폴더와 설정 파일을 생성할 수 있습니다.

 

## gradle-wrapper.properties ##

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip #이 부분 버전만 변경해주자
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

/gradle/wrapper/gradle-wrapper.properties 파일에서 gradle 버전만 변경해주면 됩니다.

그리고 그 후엔 gradle 대신 ./gradlew 명령어를 통해 gradle wrapper를 이용한 build, test 등의 작업을 수행할 수 있습니다.

 

이렇게 gradle wrapper를 사용하면 다음과 같은 장점이 있습니다.

  1. 프로젝트의 gradle 버전 표준화
  2. 다른 사용자에게 동일한 gradle 버전 제공
  3. 다른 환경에서도 동일한 gradle 버전 제공

그리고 한 번 빌드를 한 이후부터는 빌드 속도가 유의미하게 줄어드는데

이는 gradle deamon 덕분에 변경된 파일만 다시 빌드하기 때문입니다.

 

gradle deamon은 첫 빌드 이후부터 백그라운드에서 실행되며 변경되는 파일을 감지합니다.

백그라운드에서 실행되고 있으므로 다음 빌드를 실행할시 jvm을 다시 실행시킬 필요가 없으며,

변경된 부분만 다시 빌드해 속도를 현저하게 낮춰줍니다.

 

그니까 처음 접속하면 ./gradlew build 먼저 실행해서 gradle daemon을 활성화 시킨 후 공부를 시작하면,

그 이후 빌드 속도가 매우 빨라집니다.

 

그리고 영한 선생님 JPA 강의처럼 테스트 코드를 짜면서 진행한다면 gradle 빌드시 test가 task에 들어가도록 설정하는 경우가 많은데,

이 경우 테스트 때문에 빌드 속도가 느려집니다.

그럴땐 ./gradlew build -x test 명령어를 통해 테스트를 제외하고 빌드해 속도를 높일 수 있습니다.

 

반대로 테스트 코드만 실행 시키려면 ./gradle test 명령어를 사용하면 되며,

./gradle test --tests "클래스명" 과 같이 사용해 특정 테스트만 실행하는 것도 커맨드 라인에서 할 수 있습니다.

 

그래도 속도가 느리다면 --parellal 옵션과 gradle daemon 옵션을 활성화 해보는 것을 추천드립니다.

https://sabarada.tistory.com/198

 

[gradle] gradle의 퍼포먼스를 늘릴 수 있는 유용한 정보 및 옵션들

요즘은 spring의 빌드 도구로 java, kotlin을 가리지 않고 gradle을 많이 사용합니다. 오늘은 이와 관련된 주제로 gradle의 퍼포먼스를 늘릴 수 있는 유용한 정보 및 옵션드에 대해서 알아보는 시간을 가

sabarada.tistory.com

 

그리고 실행 시간은...그냥 돈 좀 더 내고 코어 수를 늘리는게 제일 확실한 해결책입니다.

(구름 IDE 학생 요금제 쓰고 나서 내 삶이 달라졌다. 하지만 이젠 요금제 정책이 바껴서 사용할 수 없습니다)

 

조금만 규모가 커져도 구름 기본 컨테이너 성능은 답답해질것입니다. (JPA 강의 정도만 되도)

그냥 돈 좀 더 내고 코어 수를 늘리면 마음이 편해집니다.

 

지금은 goorm ide 가격정책이 바뀌어서 컨테이너의 코어 수에 따라 가격이 변경되는데

기본 컨테이너는 0.5core라고 되어 있는데 여기서 2core 정도로만 올려도 성능이 괜찮았습니다.

돈 좀 더 써도 되니까 빠른 빌드를 원한다면 성능을 올려 사용해보는게 좋을 것 같습니다.

1-3. 자동 완성이 안나와요

어쩔수 없습니다. 개같은 goorm ide

 

구글 들어가서 검색하고 패키지 구조 찾아서 직접 import 해야죠 뭐

"import AccessDeniedHandler" 처럼 import + 찾으려는 클래스 붙여서 검색하면 보통 바로 나옵니다.

그냥 github codespaces 쓰자

 

1-4 url 지맘대로 변경 이슈

온라인 IDE를 사용해 개발을 하면 우리가 만든 웹 어플리케이션 서버에 연결하기 위해선 localhost가 아닌

온라인 IDE에서 빌려준 컴퓨터의 주소로 연결해야 합니다.

그래서 대부분 IDE는 실행 url을 제공해주는데 구름 IDE는 이 url의 최상위 도메인이 가끔 지 맘대로 변합니다.

.site 랑 .io 둘 중에서 보통 변하는데 이게 가끔 문제가 될때가 있습니다.

 

보통 url을 변수명 등으로 직접 입력해야 하는 기능에서, 어제까지 멀쩡하던게 안되는 상황을 경험하게 됩니다.

이게 또 주소창에 쳐서 들어갈땐 알아서 지금 실행중인 곳으로 바꿔줘서 바뀐지도 모릅니다.

 

변수에 url을 직접 입력해 사용하는 상황(swagger, redirect, cors 설정 등등)에서 오류가 날때 url을 다시 확인해보는 습관을 들입시다.

1-5 그 외 구름 IDE를 사용하며 느낀점

설정파일 분리를 해놓으면 편합니다.

이건 Python 장고 프로젝트 진행할때도 마찬가지이다.

  • 휴가때 집에서 이어서 공부를 해야하거나(근데 휴가때 누가 공부를 해요)
  • 전역 후에도 이어서 할 프로젝트를 진행중이거나
  • 배포까지 염두에 둔 프로젝트를 진행하는 상황이면

집에서도 구름 IDE 쓰기 싫으면 설정파일 분리를 해두면 좋습니다.

 

아 그리고 구름은 고놈의 보안 정책 상 docker와 ssh 연결이 막혀있습니다.

배포를 염두에 둔 프로젝트를 진행할때 참고합시다.

참고 하라고 ㅋㅋ

 

 

사실 그냥 백엔드를 안하면 된다.

 

 

 

 

'군머' 카테고리의 다른 글

마음가짐  (4) 2024.06.21
마법의 소라고동님 군대에서 백엔드 공부를 해도 될까요?  (0) 2024.06.20

마법의 소라고동님 군대에서 백엔드 공부를 해도 될까요??
"안 돼"

안돼. 하지마.

 

라고 말하고 싶지만 기어코 군대에서 웹 개발을 공부하고 싶어서 특히 백엔드를 공부하고 싶어 이 글을 들어온 당신을 위해 써보겠습니다.

 

2022년 8월 22일, 가만히 있어도 땀이 뻘뻘 나던 한 여름에 머리를 빡빡 밀고 경남 진주로 향한 한 컴공생이 있었습니다.

그 컴공생은 꿈이 있었는데 바로 군 생활 1년 반을 그냥 허투루 날리지 않고 싶었다는 거였어요.

그래서 자기계발 여건이 비교적 보장된다는 공군에 지원했는데, 

집에서 가까운 자대를 고르다보니 수도권에 있는 소규모 부대에 가게 되었답니다!

(공군은 훈련소 성적으로 특기와 자대를 골라서 간다는 사실!)

 

근데 이런거 진짜 있긴 한가

요즘은 부대 안에 PC방이 있는 부대도 있다는 말을 들어서 기대를 하고 자대에 도착한 컴공생은 화들짝 놀랄 수 밖에 없었어요.

 

가장 비슷해보이는 사진을 들고 왔는데 사실 이 사진보다 더 낡고 안 좋았다.

 

작은 부대라 그런지 페이스북에서 나보던 사지방 시설을 보고, 여기서 공부를 할 수 있으려나 싶었답니다

 

당연히 그 컴공생은 저고요, 그래도 이미 도착한 자대를 바꿀 수는 없고 사지방 빼고는 나름 시설은 괜찮았답니다..? 나름?

그리고 사지방 시설이 안 좋아서 그런지 자리는 항상 넘쳐났고, 어떻게 잘만 하면 공부를 할 수 있겠다 싶어서 열심히 찾아봤습니다.

 

그리고 1년 반 동안 공부만 한거 치곤 초라하지만 그래도 군대에서 백준 플레티넘 찍기, 입대 전 하던 장고 프로젝트 리팩토링, JAVA, spring boot, JPA 공부 시작, 토이 프로젝트 개발 및 배포 정도의 결과를 얻어갔습니다.

 

그리고 그 과정에서 얻은 결과와 후기를 블로그에 남겨보려고 합니다.

 

사지방에서 백엔드 공부를 하고 싶어요.

챗지피티도 하지 말라고 한다.

 

사실 백엔드 공부를 그리 추천하고 싶지는 않습니다.  사실 군대에서 공부하기 편한 분야가 어디 있겠냐 싶지만

자격증 공부, 제 2 외국어, 하다못에 알고리즘이나 코딩 테스트 준비가 훨씬 쉽지, 웹개발을 공부하기엔 상당히 불편한 환경입니다.

 

대부분의 부대는 아직도 저희 부대처럼 저사양 컴퓨터 + 하모니카 OS 의 기막힌 조합으로 구성된 사지방을 사용할 것입니다.

이 환경에서 웹개발을 시도한다면,

  1. 웹페이지 4~5개만 켜도 멈춰버리는 기적의 컴퓨터 사양 (Figma나 유튜브라도 키면 2개만 넘어도 피를 토하며 멈춘다)
  2. 왜인지 사람이 몰리는 시간엔 로그인 조차 안되는 무친 OS
  3. 정신나간 국방부 사지방 유해 사이트 정책

등으로 안그래도 힘든 군생활동안 너덜너덜해진 멘탈이 산산조각날 것입니다.

 

특히 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를 찾아야하는데

  1. 가격
  2. 성능
  3. 사용 난이도

문제는 이걸 만족하는 온라인 IDE를 찾기 매우 힘듭니다.. (특히 1번과 2번 조건이 양립하는게 거의 불가능)

그리고 제일 큰 문제는 노트북 무게가 그램 단위로 나오는 세상에서 온라인 IDE로 개발을 하는 사람이 세상에 몇이나 있을까요..?

개발 환경에 대한 리소스가 턱없이 부족합니다.

검색을 해봐도 자세한 설명이 있는 글들이 거의 없습니다. 이 글을 쓰기로 마음 먹은 이유이기도 합니다.

 

백엔드 개발을 한다는 가정하에 가장 중요한건 웹 서버를 와 DB를 돌릴 수 있는 서버 리소스가 제공되는지 여부인 것 같습니다.

몇몇 온라인 IDE는 단순히 실행 결과 정도만 보여주고 웹 개발 프레임 워크나 DB를 설치하고 사용할 리소스를 제공하지 않습니다.

 

그래서 백엔드 웹 개발을 공부한다는 기준으로 후보군은 이 정도인 것 같습니다.

  1. 구름 ide
  2. github codespace
  3. code-server + GCP
  4. 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 생태계에서 꽤나 이점이라고 생각합니다.

 

하지만 단점도 뚜렷한데

  1. 기본 제공 템플릿 버전 업데이트가 매우매우 느림 (spring boot 2.0.1 제공중 ㅋㅋ)
  2. 도커 기반 환경이라 프로젝트에서 docker 설치 밑 사용이 보안상 이슈로 제한됨
  3. 가격 정책 변경으로 예전 처럼 가성비 있게 사용할 수 없음
  4. IDE 자체의 기능이 적음
    1. vs code 같은 외부 extension 설치 안됨
    2. 자동완성 기능 매후 미흡 (java를 쓴다면 패키지 직접 찾아서 import 써줘야함)
    3. 프로젝트 실행하려면 터미널 명령어로 실행시켜야함(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

 

'군머' 카테고리의 다른 글

마음가짐  (4) 2024.06.21
군대에서 백엔드 공부할 때 참고할 것  (0) 2024.06.20

+ Recent posts