



10개 프로젝트로 완성 하는 Backand 웹 개발 강의를 수강하며 크게 역량을 향상한 부분은 Java, Spring을 이용한 웹 백엔드 개발 실력이다. 아무래도 유튜브나 외부 강의를 참고하여 스스로 사이드 프로젝트를 진행하는 방식은 꾸준히 학습하기 어려울 뿐만 아니라, 정확한 내용으로 학습하기에도 상당히 어렵다는 단점이 있다. 특히 프로그래밍 같은 경우에는, 인터넷에 많은 블로그에서 아무나 자료를 공유해주기에, 초심자 입장에서는 홀로 공부를 하다가 잘못된 개념이 잡힐 수 있는 우려가 있다. 이러한 부분에서 패스트캠퍼스 강의로 학습을 시작하게 되었는데, 강의에서 가장 좋았던 점을 크게 두가지를 꼽아보자면, 첫째, 실습을 기반으로 탄탄한 이론을 배울 수 있다는 점, 둘째, 실무에서만 배울 수 있는 부분들을 학습할 수 있다는 점이었다. 매 프로젝트마다 강사님은 직접 코딩을 하는 모습을 보여 주시면서 학습자가 프로젝트에서 기획한 기능을 완성하기 위해서는 소스코드를 어떻게 작성하여야 기능이 구현되는지 상세히 이해할 수 있게끔 강의를 진행해주셨다. 또한, 단순히 소스코드를 공유해주는 것에 그치지 않고, 해당 기능을 구현하기 위해서는 어떠한 문서를 참고하여 공부하면 좋은지, 레퍼런스의 출처를 함께 공유해주는 점도 유익하였다. 개발자라면, 향후에 문제를 해결하기 위해 다양한 정보를 빠르게 해석하여 나의 것으로 흡수하는 역량이 필요한데, 기술 문서를 지금부터 적극적으로 참고하여, 코딩을 수행한다면, 개발자로서 역량이 한층 더 성장할 수 있을 것이다. 이러한 코딩 기반 강의 방식은 실제로 포트폴리오를 만들거나 나만의 사이드 프로젝트를 수행할 때, 큰 자산이 될 것이라고 생각한다. 추후에 나에게 기발한 아이디어가 떠올라서, 맨 바닥부터 서비스를 완성해야하는 경우가 생길 수 있는데, 이번 강의를 통해 직접 프로젝트를 기획하고, 구현하고 테스트까지 진행하였던 경험이 IT 서비스를 완성하고 운영하는데 큰 도움이 될 것이다, 두번째로 좋았다고 생각한 부분은 강의 내용이 실무 중심으로 구성되었다는 점이다. 모든 강사님들이 실제 현업에서 프로그래밍 업무를 오래동안 경험해 보신 분들이었기 때문에, 현재 실무에서 사용하고 있는 기술 트렌드나 협업 팁들을 상세하게 알려주실 수 있었다. 현재 회사에 다니면서 시스템 운영 업무를 하고 있는 입장에서는, 이러한 실무 경험으로부터 나오는 여러 가지 강의 내용은 내가 현재 겪고 있는 수많은 문제와 연관되어 있었고, 이는 곧 개발에 막 입문하여 취업을 준비하는 초심자들에게는 어마 어마한 도움이 될 것이라는 생각이 들었다. 실제로 회사에서 다른 부서 사람들과 협업을 할 때 필요한 자세, Git Flow 전략, Git 컨벤션, 그리고 장애 상황에서의 대응 방법, 도메인 설계, 소스코드 리팩토링과 같은 부분들, 즉 단순히 코딩 강의만 제공해주는 것이 아니라, 회사의 구성원이라면 필수적으로 익혀야 할 문서 작성, 기획, 소프트 스킬 부분을 모두 상세하게 배울 수 있었다. 실제로 회사에 신규 입사자로 들어가서 일을 막 시작하기 했을 때, 문서 작성이나 소통하는 부분에 있어서 많은 어려움을 겪어본 적이 있었기 때문에, 현재 강의에서 알려 주고 있는 다양한 소프트 스킬 부분은 회사에 들어가기 전에 꼭 한번은 제대로 학습해 놓는 것이 필요하다고 생각한다. 이는 향후, 회사 생활을 잘 이어가는데 반드시 도움이 될 것이라고 확신 한다. 이러한 장점을 지니고 있는 강의를 꾸준히 수강하고 복습하여, 자신만의 포트폴리오를 완성해 간다면, 원하는 곳에 취업을 보다 빠르게 성공할 수 있을 것이다.
마지막 파이널 미션 기간에 학습한 강의 내용은 기존에 완성한 게시판 서비스의 기능을 조금 더 고도화하거나 추가적인 기능 개발을 진행하는 내용이었다. 실제로 회사에서도 이미 완성된 서비스에서 특정한 기능을 추가하는 개발을 많이 진행하곤 하는데, 강의에서 다루는 내용을 실제 회사에서 개발하는 방식이라고 생각하면서 학습에 임하면, 실무적인 경험을 간접적으로 할 수 있을 것이라고 생각한다. 이번에는 기존에 완성해놓은 어드민 시스템 내에, 그리드 상 데이터 편집 기능, 방문자수 집계 기능, 채팅 기능을 추가하게 되었다.
실제 서비스를 만들 때 바닥부터 모든 부분을 내가 직접 코딩을 통해 완성하지는 않는다. 그러한 방식은 시간적인 부분에서 제약이 있을 뿐만 아니라, 이미 다른 모듈에서 해당 기능을 더 뛰어나게 완성해 놓은 결과물이 있을 수 있기 때문이다. 따라서 특정 프로젝트에 어떠한 기술을 도입하고 싶을 때는 나와 비슷한 생각을 가진 다른 사람들이 만들어놓은 외부 라이브러리나 모듈이 있지 않은지 먼저 확인해 볼 필요가 있다. 기존에 게시판 어드민 시스템을 만드는데 있어서, adminLTE 라이브러리를 이용하여 화면을 구성하였는데, 기존 기능에서는 그리드 상 조회된 데이터들을 수정 및 삭제, 추가할 수 없었다. 데이터 편집 기능을 추가하기 위해서 adminLTE 라이브러리에 해당 편집 기능을 제공해주고 있지는 않은지 조사해볼 필요가 있는데, 찾아보니 역시 JS Grid라는 컴포넌트를 통해, 프론트엔드 단에서 데이터를 손쉽게 수정하고 생성할 수 있는 기능을 제공하고 있었다. 따라서, 샘플로 제공되는 데모 소스코드를 참고하여, 우리 프로젝트에 알맞는 형태로 해당 편집기능을 추가하게 되었고, 이를 통해 어드민 페이지에서 손쉽게 데이터를 생성, 수정할 수 있도록 기능을 고도화하게 되었다.
다만, 이러한 이러한 외부 모듈을 사용하는 방식은 빠르게 기능을 완성할 수 있다는 장점이 있으나, 너무 의존하게 된다면, 추후에 해당 모듈에 관련된 장애가 발생했을 때, 빠르게 대응하지 못 한다는 단점이 있다. 따라서 어떠한 방식이 현재 프로젝트에 가장 적합한지를 판단한 뒤, 현재 팀에 가장 필요한 방법으로 개발을 진행할 필요가 있다.
또한, 스프링 부트가 제공하는 엑추에이터를 사용하여, 실행 중인 애플리케이션의 다양한 정보를 확인할 수 있는 기능을 개발하였다. 기존에 Spring 프레임워크만 사용하였기에, 처음에는 스프링 부트에는 이러한 지표 집계 기능이 존재한다는 것에 깜짝 놀랐고, 잘 활용한다면, 서비스를 운영하고 유지보수 하는데 상당히 유용하겠다는 생각이 들었다. 회사 시스템의 기술 스택이 비록 스프링 부트가 아니라서, 엑추에이터는 사용할 수 없겠지만, 보다 효율적인 유지보수 업무를 위해서 다양한 지표를 집계할 수 있는 또 다른 외부 모듈이 있는지 확인해봐야겠다고 결심했다. 최종적으로 엑추에이터의 메트릭 지표 수집 기능을 통해 백엔드 단에서 컨트롤러 호출 수를 집계하여, 최종 페이지 조회수를 화면 단에서 보여주는 기능을 완성할 수 있었다. 단순히, 방문자수 집계 뿐만 아니라 다른 다양한 지표도 많이 제공해주고 있기에, 추후 사이드 프로젝트를 진행하면서, 다양한 지표를 활용하여 기능을 개발해보면 더 유용한 학습이 될 것 같다.
이후에는 AdminLTE가 제공하는 프론트엔드 단의 다이렉트 챗 플러그인과 Spring이 제공하는 WebSocket을 이용하여 간단한 채팅 기능을 완성할 수 있었다. 강의에서는 스프링 WebSocket과 관련된 Spring 가이드 문서를 함께 안내해주어, 채팅 기능을 완성하기 위해서는 어떠한 설정과 소스코드 작성이 필요한지 상세히 학습할 수 있게 되었다. Spring Document 의 WebSocket 부분을 강의 내에서 강사님이 상세히 설명해주는 부분이 있기에, 채팅 기능 구현을 처음 수행하는 학습자도 보다 손쉽게 기능을 완성할 수 있을 것이라는 생각이 들었다. 강의 내용과 Spring 가이드 문서를 참고하여, 사용자가 채팅을 입력하면, 앵무새와 같이 서버에서는 해당 채팅 내용을 반복해서 대답해주는 방식으로 간단한 채팅 구현을 완성할 수 있었다. 이러한 기능 구현을 통해 사용자 간 메시지를 주고받는 흐름을 전체적으로 파악할 수 있게 되었고, 이러한 학습 경험은 추후에 제대로된 1:1 채팅 기능을 완성하는데 큰 도움이 될 것이다.
이처럼 기존에 구축해놓은 서비스에 부가적인 기능을 몇가지 추가하는 방식으로 서비스를 고도화하였는데, 이러한 방식의 개발은 실제로 현업에서 많이 사용하고 있기에, 이번 강의를 통해 학습자는 실무 감각을 기르는데 많은 도움이 될 것이라고 확신한다. 우리나라에서 수많은 유저가 사용하고 있는 카카오톡도 기존에 완성되어 있는 서비스에 새로운 기능을 추가 개발하는 방식으로 업무를 진행하고 있기에, 취준생 입장에서는 내가 모든 것을 바닥부터 개발할 것이라고 생각하기 보다는 기존에 구축되어 있는 소스코드를 정확하고 신속하게 분석한 뒤, 내가 추가로 기능을 개발하는 업무도 수행할 수 있을 것이라고 생각하는 것이 좋다고 생각한다. 실제 수많은 IT 교육 프로그램에서 팀 프로젝트를 수행할 때는, 맨 땅에서부터 개발하는 경우가 많지만, 스타트업이 아닌, 기존 서비스를 운영하고 있는 회사에서는 그렇게 순수한 개발 업무만 수행하지 못할 수 있기 때문에, 회사가 필요로 하는 개발자가 되기 위해서는 이번 강의에서 진행하는, 기존 기능 위에 새로운 기능을 추가 개발하거나 기존 기능을 고도화하는 방식의 개발도 있다는 것을 확실히 인지하고 학습해놓는 것이 필요할 것이다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.