비전공자로 3월에 6개월따리 국비 졸업하고 일은 바로 구했음.
일 구하고 든 생각이 기본기가 부족하다라는 생각이었음.
일단 서비스를 만들어서 배포를 한 적이 없었음. 국비에서 만든 포트폴리오도 대부분 로컬호스트로 돌려본 거였고.
부끄러운 이야기지만 국비에서 모든 팀 플젝에서 전부 PM을 하고 개발도 주도적으로 하면서 GPT API 따와서 RAG 구현도 하면서 자만했는데
막상 졸업하고 혼자서 개발하다보니 레퍼런스 코드 없이는 게시판 하나도 똑바로 못 만드는 놈이었던거임.
배포도 국비에서 네이버 클라우드 찍먹은 해봤는데 다시 들어가서 해보려니 버튼 딸깍 말고는 아무 것도 이해가 안됐음.
그냥 강사가 쳐준 코드만 복사해서 따라칠 줄 아는 원숭이ㅅㄲ였던거임
국비 프로젝트도 데이터분석, 딥러닝이라 웹 개발 파트는 사실상 찍먹에 가까웠음.
더군다나 내가 투입된 프로젝트들이 웹스퀘어 프로젝트라 이대로 있으면 큰일 나겠다는 불안감이 확 올라왔음.
그래서 기본기를 기르기 위해 간단한 블로그라도 배포해보자라는 생각을 했음.
리액트는 국비에서 독학이지만 한달 정도 다뤄봤고 스프링은 회사에서도 다루고 있어서 Next.js도 공부해볼겸 해서 게시판을 만들었음. 근데 바로 자신감이 산산조각 났었음.
타입 스크립트 ,라우팅, 레이어 분리, SSR 처리하다보니 그전엔 "프론트엔드 그거 ㅈㅂ들이 하는거 아님?" 이랬다가 바로 "ㅈㅂ은 나였구나" 하고 있었음.
리액트 공부는 공식문서 보고 하긴 했는데 국비 커리큘럼에 있던건 아니다보니 디렉토리 분리나 그런건 하나도 몰랐었음.
국비에서 작업한 포폴을 조금이라도 재활용할 수 있을 줄 알고 까봤는데 결국 내 ㅈㅂ력만 확인했음.
그나마 백엔드는 재활용 가능했음. 국비에서 JWT 구현은 해봐서 참 다행이었음.
어쨌든 몇 주 동안 퇴근 전후, 주말 및 연휴에 짬을 내서 npm run dev와 이클립스의 실행버튼으로 돌아가는 로컬 버전의 블로그는 완성을 했음.
국비에선 찍먹만 했던 것들(스프링 시큐리티, config, 테스트 코드 작성 등)을 다듬고 Next.js 공부도 하면서 어찌저찌 다 만들었음.
이 때가 5월 말인가 6월 초로 기억함.
그리고 배포를 해보려고 하는 순간 막혔음. 막상 배포를 하려고 하다보니 배포가 뭔지도 제대로 몰랐음. 그 전엔 그냥 npm run dev와 이클립스 프로젝트 실행으로 띄울줄만 알았던 거임. 컴파일과 빌드가 뭔지 개념은 알고 있었지만 실제로 그게 어떤 형태로 나타나고 언제 사용되는지 하나도 몰랐던 거임.
그래서 GPT를 켜고 미친 듯이 질문했던 거 같음.
그러다 내린 결론. 홈서버를 올려보자.
일단 1. 클라우드에서 배포했다가 비용폭탄을 맞는 게 무서웠고 2. 홈서버를 올려보면서 직접 여러 세팅을 하는 게 공부에 더 도움이 된다는 GPT의 의견 때문이었음.
그래서 집에서 굴러다니던 구닥다리 노트북에 윈도우를 지우고 22.4 LTS 우분투를 깔았음. 우분투 설치할 때 USB 필요한데 USB가 없어서 근처 다이소에서 바로 하나 지름.
그리고 공유기 와이파이 연결을 하고 IP를 고정해야 한다길래 공유기 접속해서 IP 고정을 함. 외부 배포보단 일단 내부망에서 테스트를 해보고 싶어서 포트포워딩은 안잡고 고정만 함.
그리고 일단 빌드한 스프링 jar파일이랑 Next.js 빌드파일이랑 옮겨서 node하고 jdk하고 이것 저것 될 때까지 설치를 하고 나서 배포를 띄웠음.
아니나 다를까 바로 에러가 나기 시작함...
이것 저것 테스트를 하다보니 문제가 나왔음. SSR 컴포넌트의 경우 같은 서버 내에서 돌기 때문에 localhost:포트번호 요청을 node가 스프링으로 보내는 구조지만 CSR은 클라이언트에서 요청을 보내는 구조여서 next.js로 api 요청을 보내면 못받는거였음.
선택지가 2가지였는데 next.js에 /app/api 라우트를 추가하는 방법과 nginx 리버스 프록시를 추가하는 방법이었음. GPT와의 상담 끝에 nginx를 사용하기로 결정함.
이유는 어차피 HTTPS를 적용해야했고 정적서빙 등 여러 기능들도 추가해야해서 공부해보는 게 낫겠다는 판단이었음.
그래서 어찌저찌 nginx로 리버스 프록시 올리고 내부망에서 mkcert로 인증서 발급 받아서 https 처리까지 다 테스트를 완료 했음. 그리고 방화벽, 포트포워딩 등을 설정 해준 뒤 certbot으로 let's encrypt https 적용하고 무료 DNS도 받아서 배포를 했음.
여기까지 7월 중순. 이 때 처음으로 완결성있게 처음부터 끝까지 '개발' 이라는 것을 한 거 같았음. 개발 ㅇㄷ 뗀거지.
거기서 개발을 계속하다보니 빌드하고 빌드된걸 일일히 리눅스에서 명령어로 옮기고 테스트하면 또 터지고 이래저래 삽질하다가 결국 도커를 쓰기로 마음먹음.
도커파일, 도커 컴포즈 작성하고 환경변수 파일 분리하고 이것 저것 고치면서 컴포즈 빌드 -> 푸시 -> 풀 -> 업 4개 명령어만 입력 하면 빌드와 배포가 되도록 세팅을 했음.
깃허브 액션이나 젠킨스도 해보려했는데 너무 어려웠고 CI/CD를 하기엔 내 실력이나 지식이 모자랐기 때문에 그냥 수동 배포를 하기로 했음.
그렇게 해서 배포 파이프라인까지 구축하니 8월.
근데 이렇게 다 만들고 나니 약간 지치기도 하고, 일이 바쁜 것도 있어서 한 달 정도 손을 놨던 거 같음. 이 때는 자료구조, CS하고 정보처리기사 공부를 했음.
의외로 포트폴리오 작업했던 게 정보처리기사나 CS지식 등에 도움이 많이 됐던 거 같음. 투입 중인 프로젝트가 폐쇄망이라 외부망이 전혀 안되서 점심시간에 짬내서 개발용으로 있는 jdk로 자료구조 공부를 했었음.
배열, 리스트, 스택, 큐, 트리, 해시맵, 힙 구현하고 정렬 및 탐색 알고리즘 몇 개 정도 짜봤던걸로 기억함.
이게 의외의 곳에서 도움이 됐던 게 그 프로젝트에서 담당 페이지가 천 단위였는데 요구사항이 바뀌거나 테스트에서 빠꾸를 먹으면 비슷한 요소가 있는 다른 페이지도 전부 수정해야 했었음.
예를 들어 '닫기' 버튼을 '닫음' 버튼이라고 바꾸려면 수 천 개의 페이지에서 일일히 다 바꿔줘야 했음.
그리고 그 때마다 수정 해야 하는 요소가 있는 페이지를 찾았어야 함. 기존에는 IDE의 검색 기능이나 정규식 등으로 찾았는데 너무 비효율적이었음.
그거를 알고리즘 짠 걸로 전부 체크 및 검사하고 조회해서 CSV 형태로 만들어서 엑셀로 만드니 불필요한 작업시간도 줄고 작업 분배에도 크게 도움이 됐었음.
여기까지가 10월.
그렇게 있다가 10월 중순에 내 첫 투입 프로젝트에서 철수하고 작은 ERP 프로젝트로 투입됨. 이 때는 확실히 블로그 프로젝트 한 게 엄청나게 도움이 됐음.
이 때 Nuxt 처음 다뤄봤는데도 수월하게 다룰 수 있었음. 그리고 이 때 공통 개발도 해봄. 빌더 등 디자인 패턴을 실제로 활용을 해보는 경험이 됐던 거 같음.
JPA, 젠킨스 등도 이 때 본격적으로 다뤄 봄.
그 전엔 JPA로 엔터티 선언만 해두고 Mybatis를 사용해 트랜잭션을 하는 해괴한 방식을 쓰거나 JPA를 사용해도 영속성을 제대로 활용하지 않고 무식하게 썼다면 제대로 쓰는 방법을 익힌 거 같음.
이게 11월.
그리고 현재 프로젝트 투입하고 일하다 보니 올려둔 블로그가 리액트 취약점 터져서 다운됨. 다행히 도커 컨테이너만 터지고 문제는 없었지만 바빠서 패치 못하고 있다가 겨우 패치하고 패치 되면서 안되는 기능들 고침. 정보처리기사 12월 24일 크리스마스 이브에 발표나서 보니 다행히 합격. 그렇게 2026년 1월 1일 새해가 밝았음.
아직도 갈 길이 멀지만 그래도 1인분은 하게 된 거 같음. 올해도 열심히 해야지. 다들 새해 복 많이 받고 돈 많이 벌길 기원함.
https://ziz.pics/wT98i
멋있어요
전공출신 개발자들 포함해서 상위1퍼
나중에 대성할 듯 개추
왜그렇게까지하지?