나의 개발 역사 회고

아양시·2022년 12월 23일
1

컴퓨터 인생 시작

  2019년에 경북대학교 컴퓨터학부에 입학했다. 그때부터 코딩을 시작했고, 학교에서 배우라고 하는 전공과목들을 열심히 들었다. 저학년 때는 할 줄 아는 게 없었고, 뭘 해야 할지도 몰라서 그냥 적당히 학교 공부하고 적당히 놀았던 것 같다. 그 와중에 재미없는 교양은 거의 버리다시피 했고, 프로그래밍 기초(C언어)-자료구조-자료구조응용 요 루트는 확실하게 공부했다. 고학년이 되어서도 알고리즘, 운영체제, 네트워크, 데이터베이스 등 전공과목은 열심히 공부했다. (비록 지금은 많이 잊어서 복습이 필요할지라도 ..) 이때는 당연하게도 뭔가를 개발할 수는 없었고, 학교 과제를 잘 해내는 수준이었다.


뭐라도 개발해보고 협업해보기

  그리고 죽음의 2학년 2학기부터는 슬슬 프로젝트 과목들을 많이 듣게 됐다. 그래서 자연스럽게 팀 프로젝트를 여러 번 경험했고, 그 과정에서 Git도 사용할 수 있게 되었다. 처음에는 냅다 main 브랜치에 각자 코드 추가만 하고 마구 수정해서 conflict 나는 일이 일쑤였지만 ㅎㅎ 프로젝트 수준도 비슷했다. 기획만 거창하고 서버나 데이터베이스 연결 없이 껍데기만 있는 서비스들을 만들어내고는 했다.

모아놓으니 많기도 하구나 그 과정에서 팀장도 해보고, 협업하는 법이나 소소하게 웹프론트엔드, 앱 등을 배워볼 수 있었다. 그래도 항상 미완성으로 끝나는 프로젝트들을 마주하면서 엄청나게 아쉽고 빨리 뭔갈 완성할 수 있는 기술을 배우고 싶었다.


사내 시스템 개발 아르바이트

  그렇게 학부에서 제일 바쁜 시기가 지나고 밀리무드에서 아르바이트를 하게 되었다. 뭐라도 하고 싶었던 시기에 좋은 기회가 생겨서 하게 되었다. 나는 사실 그 때 회사에서 실제로 서비스를 운영하기에는 아주 얕은 경험들 몇 개만 있었고, 데이터베이스의 D자도 몰랐는데 대표님은 내 뒤죽박죽 웹프로그래밍 수업 과제를 보고 속아서 나를 고용하셨다. 아니? 그래도 나는 2년 반 간의 코딩 경험과 Java, 웹 수업을 이수했었다. 그렇게 일을 시작했다.

  나는 아주 쓸모있는 개발자 직원이었다. 사실상 대부분 나 혼자 일했는데, 내가 생각해도 나는 회사에 아주 큰 애정과 책임감을 가지고 할 수 있는 일을 찾아서 했다. 아영님 세 명 정도 복사해서 두고 싶어요! 혁명이에요! 마법 같아요! 알아서 척척 제시해주시니 너무 좋아요! 등등 사용자의 행복하고 뿌듯한 생생 후기를 들으며 열심히 일했다 히히

  그 결과 나는 많이 성장했다. 그전에는 너무 쉽게 알려주시는 교수님 밑에서 살짝 배운 Java였는데, 이제는 내 주 언어가 되었다. 프레임워크 없이 순수하게 Java와 JSP로 개발했기 때문에 도움이 많이 된 것 같다. 동시에 MySQL 실력도 생겼다. 원하는 명령을 하기 위한 쿼리를 대부분 짤 수 있는 수준인 것 같다. 그리고 이제 자동으로 사용자 중심으로 생각하게 된 것 같다. 사실 사용자인 직원분들이 기뻐하시는 게 좋아서 더 편리하게 만들어드리려고 항상 생각하다 보니 자연스럽게 몸에 밴 것 같고, 이런 점은 서비스를 제공하는 개발자로서 좋은 역량이라고 생각한다. 문제 해결력도 많이 늘었다. 아기 개발자라,, 실수나 설계하면서 생각하지 못한 부분 때문에 에러가 많이 발생했고, 이는 당장 회사 운영에 영향이 있어서 빨리 해결을 해야 했다. 그리고 직원분들이 요구하시는 내용을 웬만하면 최대한 다 구현해드리고 싶었다. 이러한 환경이었다보니 늘 수 밖에 없었다고 생각한다! 그리고 이 때 쯤 백엔드 개발자가 되겠다고 진로를 정하게 되었다. 아무래도 화면 구성부터 디비 설계까지 웹 서비스 개발 전체 과정을 아우르는 일을 다 경험해 보니 내 기호를 알게 된 것 같다. 확실히 디비를 설계하고 데이터를 들고 와서 어떻게 처리할지 로직을 짤 때가 더 신났다. 그래서 이 길로 정하게 되었다.

  이렇게 많은 것을 얻었지만 아쉬운 점도 많았다. 일하는 내내 체계와 효율과 설계가 없는 것이 매우 아쉬웠다. 학부생만으로 이루어진 프로젝트였고, 당장 기능을 하는 게 중요했기 때문에 당장 구현에만 집중했기 때문이었다. 데이터베이스 테이블이나 컬럼은 필요해질 때마다 그 때 그 때 간단하게 추가해서 사용했고, 코드는 중복이 아주 많고 아무래도 지속성이 없어보였다. 계속해서 리팩토링을 고민했지만, 당장 해야 하는 일도 있었고, 너무 멀리 와버려서 쉽게 시도할 수가 없었다. 그래서 코드와 프로그램 구조를 효율적으로 가져갈 수 있는 프레임워크를 공부 해야겠다고 생각했고, Spring Boot 공부를 시작하게 되었다.


서버 역할로 프로젝트 완성하기

  이제 확실히 Spring Boot를 활용해서 서버를 담당할 경험이 필요했다. 운좋게 좋은 팀원들을 만나 공개SW 개발자대회에 참여하게 되었다. 이 프로젝트는 정말로 제.대.로. 해보리라 결심하고 기획부터 설계, 개발, 발표까지 5개월 정도의 긴 시간동안 뭐하나 대충 한 것이 없었다. 이제 나는 꿈에 그리던 REST API를 개발할 수 있는 사람이 되었다. 처음 도메인 하나 Spring Layer를 완성했을 때의 뿌듯함을 잊을 수가 없다. 아주 간단한 게시판 정도의 기능이었지만 나에게는 아주 큰 진보였다. 그리고 Git-flow 브랜치 관리 방식, Swagger, Redis 등 새로운 기술을 많이 접해볼 수 있었으며, 멘토링 기회를 통해 대규모 트래픽에 대응할 수 있는 아키텍처에 대해서도 배울 수 있었다. 확실히 Git이랑도 훨씬 친해졌다. (이제는 코드가 사라지거나 충돌나는 게 무섭지 않다!!) 결과적으로 이웃사이는 예선을 통과하고 결선까지 진출해서 352팀 중에 5위로 우수상을 받게 되었다. 이렇게 소중하고 소중한 프로젝트가 되었다.

그리고 디자이너가 있을 때 서비스의 완성도가 얼마나 향상되는지도 체감하게 되었다. 정말 대단한 사람들이다 !!
  이렇게 성공적인 프로젝트였지만 믿고 따를 수 있는 멋진 팀장님이 존재했고, 나는 그 사람 없이는 서버 개발을 맡을 자신이 없었다. 대부분 어려운 일들을 맡아줘서 나는 프로젝트 진행 기간동안 큰 기술적 어려움을 딱히 마주하지 않았고, 뭔가 혼자 고민하고 문제를 해결한 경험이 부족했다. 이제 나는 스스로 설계하고 문제를 해결할 수 있는 한 명의 서버 개발자로서 발전해야 했다.


내가 담당한 서버

  열심히 몇 개월 동안 대회에 참여하고 취준도 하다가 미루고 미뤄뒀던 종프를 마무리해야 할 때가 왔다. 이번에는 내가 서버를 책임져야 했다. 다수의 사람이 한곳에 접속해서 다 같이 플레이하는 웹 기반 십자말풀이 프로젝트였다. 아주 간단한 형태지만 게임 도메인을 경험해 보게 되었다. 사용자들이 문제를 풀 때마다 갱신된 게임판이나 랭킹 정보를 웹소켓으로 접속 중인 사용자들에게 전파했고, 사용자의 세션 정보와 점수를 Redis에 저장하고 관리했다. 그 과정에서 각 정보들을 어떤 구조로 저장할지 등을 고민하고, Sorted Set 등 Redis에서 제공하는 다양한 기능들을 사용해 볼 수 있었다. 그리고 POST 요청 시만 발생하는 CORS 관련 에러나 쿠키가 설정되지 않는 문제 등도 겪어볼 수 있었다.

  하지만 제출 기한을 맞추느라 최적의 설계는 하지 못한 것 같다. 게임 등에서 웹소켓을 사용할 때 웹소켓 세션을 어떻게 관리할지 더 고민이 필요할 것 같다. 그리고 점수처럼 데이터베이스에 영구적으로 저장해야 하는 정보를 Redis에서 언제 옮겨올 건지 Scheduling 하는 과정도 생략되었다. 이처럼 부족한 부분이나 문제를 해결하면서 찾아본 지식들을 더 공부해야 하고, 프로젝트도 보완해볼 예정이다.


앞으로 나아갈 방향

  지난 경험들을 돌아보니 지금의 나는 정말 많이 성장했다고 생각한다. 하지만 목표가 발전될수록 여전히 많이 부족하고, 계속해서 노력이 필요하다. 우선 지난 프로젝트들을 확실히 소화할 것이다. 프로젝트들을 진행하는 동안 하지 못했던 고민들을 해보고 더 공부할 것이다. 그리고 여전히 부족한 경험을 채워볼 계획이다. Spring Security, 앱 클라이언트와의 통신, 배포와 CI/CD 등을 공부해서 이를 프로젝트에서 활용해 볼 것이다. CS와 알고리즘 공부는 매일 조금씩 꾸준히 해보려고 한다. 마지막으로 이 모든 것들을 열심히 기록해보려 한다. 기록하면서 얻은 지식을 정리하고 부족한 점을 찾아 채워나갈 것이다. 열심히 해보자 !!!

profile
BE Developer

0개의 댓글