///
Search
🧑🏻‍💻

면회신청관리체계

태그
Project
면회신청체계개발

ACTION : 생애 첫 개발 프로젝트

군 내에서 진행된 면회 신청 관리 체계 개발에 투입되어 21.03~21.06월까지 기능 구현을 완료하고 이후 지속적인 기능 추가 및 운영, 유지 보수 업무를 진행하였습니다.
특히 개발과 관련된 Background가 거의 없는 상태였기에 업무에 투입되면서 모든 것을 새로 배워야 했습니다. 하지만 일과 후 자발적인 전공과 Spring에 대한 공부를 함으로써, 빠른 학습 능력과 열의를 보여주었으며 이를 통해 성공적으로 개발 업무를 수행할 수 있었습니다.
다음과 같은 기술을 배우고 사용할 줄 알게 되었습니다.
면회 신청 체계의 사용자는 다음과 같습니다.

PROBLEM : 아무 것도 모른다.

이 프로젝트를 하기 이전에 저는 컴퓨터 공학이라는 분야를 전혀 알지 못했습니다.
학교에서 데이터 구조나, 컴퓨터 네트워크 수업을 듣긴 했지만, 이 분야가 적성에 맞을지 걱정과 고민이 많았습니다. 하지만 이를 알기 위해선 제대로 공부와 프로젝트를 하는 것이 중요하다 생각했고, 마침 군대와 맞물려 공군 정보 체계 관리병으로 입대하게 되었습니다.
이후 프로젝트에 투입된 후 다음과 같은 부분을 공부하였습니다.
공부 내용 및 정리

SOLVING : 맨땅에 헤딩

프로젝트에 투입된 후에는 공부와 업무를 동시에 진행하였습니다.
이에 저는 팀에서 다음과 같은 역할과 구현을 맡았습니다.
1.
병사 및 간부용 로그인 기능
2.
병사 면회 신청과 신청서 Validation
3.
관리자의 계정 생성과 삭제
4.
인터셉터를 이용한 IP 제한
5.
게시판 CRUD와 페이징 처리
6.
역할에 따른 접근 제한 기능
7.
도메인에 대한 DB 설계
8.
기타 비즈니스 로직

FEEDBACK : 제대로 개발 프로젝트를 다시 하고 싶다.

군 내 업무인 만큼, 제대로 된 개발 프로세스와 개발 기술들을 사용하기에 제한적이었습니다.
특히 MyBatis를 사용하면서
1.
Service의 로직보다 SQL문이 훨씬 더 중요하다는 점
2.
DB의 테이블과 DTO가 정확히 매핑되지 않는다는 점
에 불편함을 느끼고, ORM이라는 개념을 알게 되면서, JPA를 공부해보기도 했습니다.
뿐만 아니라, 기능 구현에 바빴을 때는 신경쓰지 못했지만, 기능이 점점 추가되면서
1.
기능을 하나 구현할 때, DAO, DTO, Controller를 모두 만들고 테스트하는 상황
2.
에러를 하나 잡을 때마다 서버를 재시동해야하는 상황 등
에 의문을 가지고, Test라는 개념을 알게 되면서 ‘토비의 스프링’을 통해 Junit을 공부하기도 했습니다.
먼저 아쉬운 점은
1.
JPA나 Junit을 적용한 프로젝트를 해보지 못했습니다.
a.
해당 체계의 운영 및 새로운 기능 추가가 지속적으로 있었고, 개인이 맡는 레거시 체계의 수가 많기에 해당 체계의 리팩토링을 집중적으로 진행할 수 없었습니다.
2.
CI/CD 환경을 제대로 갖추기 어려웠습니다.
a.
작년에 처음으로 gitlab이 도입되어 버전 관리를 시작하는 상황이었습니다.
3.
너무 업무 중심의 개발을 한 듯합니다.
a.
당장 들어오는 업무를 처리하기 위한 코드를 짜다보니 반복적인 코드도 많게 되었습니다.
b.
특히 스프링의 기능을 학습하는 데에만 초점을 맞추다보니, 스프링의 핵심 원리에 소홀한 듯합니다.
c.
이에 현재 ‘토비의 스프링’을 읽으며 다시 한 번 스프링을 학습하고 있습니다.
4.
제대로 도움이나 피드백을 받을 수가 없어, 모든 것을 스스로 학습해야 했습니다.
a.
스스로 학습하면서 많은 것을 배웠지만, 그럼에도 주변에 훌륭한 개발자가 있었더라면, 더 빠르게 성장할 수 있었을거란 생각이 듭니다.
b.
그렇기에 전역 후, 훌륭한 개발자분들의 피드백과 조언을 받으며 더 빨리 성장하고자 합니다.