2022년 회고 (2) 풀스택 국비교육 수강기


국비 교육 과정을 듣기로 한다.

2022년 6월~10월 : 국비교육 수강

사실 지금 생각해보면 한없이 가벼운 선택이었다.

어차피 1년정도 쉬기로 한거, 돈도 더 들지 않겠다 주말에는 지인의 카페에서 계속 알바를 하고 평일에는 9시부터 6시까지 풀스택 국비교육과정을 듣기로 한 선택말이다.

선택의 기준은 아주 간단했다.

  1. 시작하기에 부담이 없을 것, 곧 언제든 다시 돌아갈 수 있을 것
  2. 교육과정은 취업을 하기 유리할 것 (범용적일 것)

여기다가 개발자인 친구가 “너는 프론트엔드, 백엔드 개념도 모르니까 일단 다 들어보고 나중에 심화해서 공부해봐” 라고 조언해준 것을 토대로 결정한 것이 멀티캠퍼스에서 진행하는 AI 플랫폼을 활용한 웹 서비스 개발 과정을 들었다. (지금 비슷한 과정은 이건거 같다. 링크)

실제로 배웠던 것은 다음과 같다.

커리큘럼

  • Java 3주
  • MySQL 기본 쿼리 문법과 Java와 연동 1주
  • HTML5, CSS, JavaScript, jQuery 2주
  • Sevlet & JSP, Spring, Sptring boot 와 MyBatis 3주
  • Jenkins, Naver Cloud Platform을 이용한 배포

프로젝트

  • 자율 기획 프로젝트 2주
    • 배포하지 않음.
  • 자율 기획 프로젝트 및 배포 약 8주
    • 배포 플랫폼 : Naver cloud platform

기타 특강

    • Git, Github 사용 1회
    • Notion 사용 1회
    • React 체험 3회
    • Oracle DB 사용해보기 1회
    • 기타 취업 관련 특강….

AI 서비스이고 플랫폼이고 뭐고 사실 그때 제대로 알지 못했고, 나중에 생각해보니 Open API 중에서 AI 기술을 접목한 API를 사용해본다는 뜻이었다 👀 이때 API라는 개념이 없었는데..😣 지금 생각해보니 구현을 한 것 자체가 정말 대단했다.

수업은 한참 코로나가 진행중이던 때라 대부분 비대면으로 이루어졌다.

정규 수업시간은 8시간동안 계속 수업과 실습 코드 작성을 했고, 몰입해서 이 시간을 보내고 나면 나머지 시간은 지쳐서 쓰러져 자기 일쑤였다.

이렇게 약 3개월동안 위의 기술을 모두 배우고 프로젝트를 2.5개월간 하려다보니 정말 필수적인 것만 속성으로 배울 수 있었다. 이때 당시의 기록들을 좀 들추어 각 기술에 대한 이해도를 살펴보니 꽤 재밌다.

  • 자바 교육과정 중, 변수나 연산자, 조건문과 반복문은 사실 함수나 다름없어서 큰 놀라움은 없었다. 그저 콘솔에서 입력과 출력으로 어플리케이션이 돌아간다는 자체가 가장 신기했다.
  • 교육 내용은 확실히 자바 기초에 부합하는 정확한 내용들이었으나 학습하고 공부하는 입장에서 너무 빠른 input 으로 ‘그렇구나’ 하면서 넘어가는 지식이 굉장히 많았다. 언어 자체를 어떻게 사용하는 지에 집중하여서 학습하였던 것 같다.
  • 학습 내용 중 가장 충격적이고 바로 받아들이기 힘들었던 개념은 객체지향언어 라는 특성이었다. 패키지와 클래스를 분리하고 이를 import 하거나 인스턴스를 만들어서 사용할 수 있다는 것을 배웠을 때 한동안 멘붕을 느꼈었다.
  • 바로 다음주 연달아 Java 메모리 사용과 참조타입을 공부하며 두번째 충격을 받게된다 🫠
  • 처음 배운 그 순간부터 DB를 별로 좋아하지 않았나보다. 추후 JDBC 를 사용하며 자바 교육기간동안 3차 멘붕을 맞게 된다.
  • HTML, CSS, JavaScript 를 좋아했다. 다만 코드가 늘어날 수록 코드를 주체하지 못해 고민했다.
  • 자바스크립트는 jQuery보다는 바닐라로 사용하는 것을 훨씬 좋아했는데, 비동기 요청을 하고 받는 것을 하면서도 비동기에 대한 이해가 부족했던 것 같다.
  • 배포는 네트워크에 대한 지식이 전무하였지만, 수업자료가 꽤 잘되어있어서 할 수 있었다.
  • controller -> service -> repository 로 이어지는 계층형 아키텍처를 이해하는 데 힘들었다. 이것은 함께한 수강생 중 대부분이 비슷했는데 그냥 '익숙해진다'에 더 가까운 학습이었던 것 같다. 이런 아키텍처에 대한 이해는 본격적으로 프로젝트를 시작하고 구현을 반복하면서 점점 더 익혀갔다.
  • 개발 공부를 시작한 것에 즐거워하고 만족했다.

프로젝트에 대하여

ezgif com-gif-maker
  • 사용 기술 스택 : Java11, SpringBoot 2.7, MySQL, MyBatis, JavaScript, jQuery(비동기 요청시에 사용)

거의 2달정도를 잡고 있었던 이 프로젝트 Artchive. 참 무에서 유로 간다고 생각하고 비전공자 5명이서 한땀한땀 만들었다. HTML 시멘틱 태그를 처음부터 만드느라 구현자마다 미묘하게 페이지가 달라져서 나중에 통일시키느라 고생했던 기억이난다.

지금 보면 AWS에 배포하긴 했지만 인프라나 설계면에서 부족한점이 많다.

오히려 HTML, CSS 쪽이나 바닐라 JS를 이용하여 지도 API를 사용하고, 비동기 요청을 하는 등 프론트 역량을 더 많이 발휘했었다. 화면에 보이는 로직 중 여행 코스를 기획하고 저장하는 페이지 view부터 crud까지 맡아서 했다. 아래 ERD 에서는 노란색으로 표시된 코스에 해당한다.

Entity2

이때의 가장 큰 이슈는 두가지였다.

첫번째, "각 코스의 순서를 view에서 어떻게 수정할 것인가, 그리고 이것이 DB에 어떻게 저장해야 좋을까" 였다. 프론트에서 order와 내용을 JSON형태로 넘겨 DB에 String 형태로 직렬화하여 스냅샷처럼 저장했다. 🥹 링크드 리스트나 우선순위를 주는 등의 다양한 방법이나 테이블을 어느정도 정규화+비정규화하고 인덱스를 생성하여 최적화할 수 있는 방법들이 있었는데.. 당시 생각해보면 게시판 페이지 로딩부터 느렸던 이유가 다 있었다.

두번째, AI학습을 위한 데이터 수집과 학습의 자동화였다. 사용자의 이용패턴을 DB에 저장하고 이를 데이터로 추천해주는 Aitems를 적용했었는데. (담당은 내가 아니었다.) 이부분은 스스로 이해도가 너무 낮았고, 더미 데이터를 대량으로 만들 수 있을만한 여유도 기술도 없었다. 이 Ai 학습 패턴 업데이트를 자동화하지 못했던 것도 아쉽다.

지금 보면 아이디어 자체는 여러가지 시도하기 좋았는데 아쉬움이 많이 남는 프로젝트이다.


교육과정의 좋았던 점

  • 부담없이 view부터 어플리케이션, DB, 인프라까지 전체를 훑는 경험해 볼 수 있었다. 그래서 내가 어디에 더 흥미있는지 고민하기에 좋은 환경이었다.
  • 일단 부담이 없었다. 시도해보는 가벼운 마음으로 시작할 수 있었다.
  • 강사님이 수강생 한 사람 한 사람 버리지 않으려는 분이어서 진도를 쫓아갈 수 있었다.

교육과정의 아쉬웠던 점

  • 너무 급하게 배우려다보니 무엇하나 어떻게 학습해야하는지 알지 못한채로 5.5개월이 끝나버렸다.
  • 이건 우리반의 특성인 것 같은데 먼저 공부해봤거나 전공을 했거나 프로젝트 방법을 아는 사람이 극 소수인데다 초반에 자율 조구성을 할 때 1~2개 그룹에 편성되어서 어떻게 프로젝트를 해야하는지 모르는채로 시작해야 했다.
  • 프로젝트에 대한 평가가 기획과 발표 스킬에 집중되어 있었다.