해군 SW 개발병 복무 후기

2023-04-15
general
diary
military
ko

2021년 9월 입대하기 직전에 블로그 하나는 갖고 싶다는 생각이 들어 부랴부랴 블로그를 만들었다. 그리고 해군 개발병에 대한 정보가 인터넷에 워낙 부족했어서 이를 조금이라도 해소하고 싶어 지원 후기를 작성했었다. 그 기억들이 아직 생생한데, 지금 전역을 앞두고 있는 나를 보니 군생활이 생각보다 빨리 지나간 것 같다. 이 글에는 개발병으로서 복무한 후기를 적어보겠다. 누군가에게 이 글이 도움이 됐으면 좋겠다.

실제로 개발을 하나요?

내가 가장 걱정했던 부분 중 하나이다. 많은 정보를 알지 못한 채 훈련소에 입대했었는데, 그 기수에는 개발병이 나 혼자였다(21~22년 기준 평균 2기수당 1~2명 입대). 그래서 훈련소 동기들은 물론, 훈련소에 있는 훈련 교관들도 개발병 직별에 대해 모른다. 밖이랑 단절된 채로 6주를 있으려니 자대는 어딘지, 진짜 개발은 하는지, 그냥 다른 전산병들이랑 같이 컴퓨터 정비를 하게 되진 않을지 고민하다 보면 별걸 다 상상하게 된다. 옆에 있는 훈련소 동기들에게, "진짜 개발 하겠어? 그냥 컴퓨터 좀 고치겠지"라는 말을 몇번 듣고 나면 꽤 불안해진다. 근데 알고보니 자대는 한 곳으로 정해져 있고(면접본 곳), 주 업무는 정말 개발이 맞았었다. 오히려 개발을 실컷 할 수 있다. 개발 가능한 인력이 병밖에 없기 때문이다.

개발 환경은 어떤가요?

사무실에서는 앱/웹에 올라가는 다양한 프로젝트를 진행한다. 때문에 프로젝트의 특성은 제각각이지만, 그 중 인트라넷 환경에 대해 이야기해보고 싶다.

군 부대는 보안 유지를 위해 인트라넷을 사용한다. 쉽게 말해 전국의 군 부대들이 사용하는 폐쇄망이 있다는 건데, 이는 인터넷이랑 연결되어있지 않다. 개발 또한 인트라넷 환경에서 하는데, 이로 인해 생기는 문제가 몇 가지 있다.

우선 패키지 다운로드에 제약이 생긴다. 요새 라이브러리 없이 개발하는 건 상상하기 힘들다. 특히 웹, 앱 개발은 정말 많은 라이브러리의 기능을 가져다 쓰는데, 인터넷 접속이 안된다는 것은 npm이나 maven의 접속이 안된다는 이야기다. 따라서 패키지를 외부에서 다운받아 보안절차를 거쳐 인트라넷으로 가져오는데, 보안절차가 사이에 있는 것이 개발생산성 측면에서 꽤 방해가 된다. 미리 설치해서 가져온다는 건 무엇을 쓸지 한번에 생각해서 전부 미리 받아온다는 것인데, 무엇을 쓸지 미리 생각한다는 것이 쉽지가 않다.

다음으로는 재사용 문제가 있다. 인터넷에서 인트라넷으로 패키지를 들고 와 사용한다고 이야기를 했는데, 슬프게도 힘들게 가져온 패키지를 다른 프로젝트에 재사용하기가 쉽지많은 않다. 어떤 패키지의 의존성을 수동으로 확인하기가 너무 어렵고, 의존성의 버전도 여러 가지가 있기 때문이다.

패키지뿐만이 아니다. 개발 툴들도 취향껏 쓰기가 어렵다. 이유는 앞과 동일한데, 그래서 기존에 인트라넷에 있는 툴들을 사용하는 데 어느정도 만족해야 한다. 이 부분은 라이브러리도 마찬가지다. 나는 리눅스 환경을 선호해서 WSL을 쓰고 싶었는데 그러지 못해서 아쉬웠다.

성장할 수 있었나요?

같이 한 사람들 모두가 동의할지는 모르겠으나, 개인적으로 많이 배울 수 있는 직별이라고 느낀다. 자대에 처음 갔을 때는, 물론 그만한 이유는 있었지만 개발자 입장에서는 상대적으로 열악한 환경에 실망했다. 하지만 오히려 환경에 조금 제약이 있으니 같은 문제여도 고민을 더 많이 하고, 환경을 개선하기 위해 직접 노력할 수 있는 부분이 있어 경험을 쌓을 수 있었다. 나는 자바에 대해 원래 악감정이 있었는데 가서 백엔드 개발을 자바와 스프링으로 해야 했었다. 덕분에 처음으로 스프링(부트 X. 레거시 O)을 배워볼 기회가 생겼고, 사용해보니 꽤 좋은 프레임워크라는 것을 느꼈다. 또한 비록 언어로서의 단점은 존재하는 자바지만, 언어를 둘러싼 생태계가 정말 탄탄하다는 것을 알게 되었다. 사실 자바는 언어로서도 이미 꽤 많이 발전했는데, 아직 많은 사용자들이 자바 1.8 / 11에 머무느라(현재 자바 20까지 출시됨) 그 기능들과 향상된 JVM을 사용하지 못하고 있다는 것은 슬픈 일이다.

병 1~2명이 한 프로젝트를 주도하기 때문에 직접 해결해야 하는 문제들도 많았다. 병으로 입대하는 사람이면 보통 나이가 20대 초중반인데, 나는 방학 때 인턴 몇 번 빼곤 학교만 다니다 갔고, 주변에 회사생활 몇 년 하고 온 사람들도 있지만 병들 실력이 많이 해봐야 주니어 정도다. 하지만 그곳에선 모든 개발을 해야 하니 이곳저곳에서 문제를 많이 만나기 마련이었다. 그래서 내가 만든 서비스를 쓰는 사용자들에게는 조금 미안하지만 오히려 나에게는 직접 경험을 쌓을 수 있는 시간이기도 했다.

여가시간도 충분했다. 근무시간에 개발을 하지 않았어도 여가시간을 잘 활용하면 개발 공부를 충분히 할 수 있는 시간이었다. 나는 여가시간에 폰하고 테니스를 많이 했다.

무엇보다 함께 지내는 선후임 병사들이 정말 좋은 사람들이었다. 어느정도 같은 분야를 공부하는 사람들끼리 다같이 있으니 평소에 개발 이야기도 할 수 있고, 좋은 개발 서적들도 주변에서 많이 추천해줘서 유익한 경험을 할 수 있었다.

총평

전체적으로 꽤 만족하는 편이다. 힘든 점이 있다면 당직근무가 꽤 자주 있었다는 점이지만, 준비를 좀 한다면 그보다 많은 편의를 자대에서 누릴 수 있는 직별이라고 생각한다. 또 이 글에서는 개발 이야기만 주로 했으나 부대 자체가 워낙 좋은 편이고, 주변 사람들도 좋아서 흔히 얘기하는 악성 선후임을 볼 일이 거의 없는 점도 큰 메리트이다.