[우아한 테크코스 8기 백엔드]프리코스 4~6주차 회고 -오픈 미션-

2025. 11. 25. 00:00·우아한 테크코스 프리코스

우아한 테크코스 4-5주차 미션이 끝났습니다. 8기에는 지난 기수들과 다르게 마지막 미션이 한 주가 더 늘어난 2주간의 오픈 미션으로 진행되었습니다.

이에 대해 프리코스를 끝내며 미션에 대한 회고를 적어보려합니다.

 

https://github.com/LEEJaeHyeok97/digging-into-db

 

GitHub - LEEJaeHyeok97/digging-into-db: 데이터베이스 프로그램을 자바코드로 직접 만들기

데이터베이스 프로그램을 자바코드로 직접 만들기. Contribute to LEEJaeHyeok97/digging-into-db development by creating an account on GitHub.

github.com

 

 

오픈 미션의 첫 인상은 ‘충격’이었습니다. 이전 기수에는 편의점 문제가 나왔었는데 저는 사실 잘 풀지 못했었습니다. 그래서, 굉장한 각오를 하고 맞닥드린 4주차의 오픈 미션은 ‘자유’ 그 자체였습니다.

1,2,3주차의 프리코스 미션에서 배운 것들을 잘 적용했냐고 물어본다면 부끄러울 정도로 적용하지 못한 코드를 제출했습니다. 그래도 한가지 변명이라면 DB라는 row level의 프로그램을 만드는 것과 더 하이 레벨의 애플리케이션 프로그램을 만드는 것은 코드가 분명 달랐습니다.

자기 반성을 하기 위해 오픈 미션을 진행하면서 느낀점을 적어보겠습니다.

 

1. 새로운 방식의 오픈 미션

오픈 미션이 지난 기수들 처럼 기준이나 가이드가 있길 바랬는데 심지어 바리스타에 도전하는 것 까지도 된다는 설명에 우테코는 정말 무엇이든 좋으니 우리가 ‘도전’에 뛰어들길 원하는구나 생각됐습니다.

최근까지의 저의 가장 큰 도전은 ‘데이터베이스’를 직접 자바 코드로 만드는 일이었습니다. 이전에는 시간이 없다는 생각으로, 아직 데이터베이스에 대한 지식들이 부족하다는 등의 이유로 개발을 초기에 중단했던 프로그램이었습니다.

그래서 우테코가 만들어 준 오픈 미션 시간 동안 근래 최고의 도전인 ‘데이터베이스 프로그램 자바로 만들기’에 다시 도전하기로 했습니다.

 

 

2. 우테코가 제시한 객체지향 원칙들을 지키지 못한 아쉬움

분명, 1~3주차 까지의 우테코는 객체지향을 지킬 것을 제안했고 이번 우테코의 핵심 키워드는 역설적이게도 ‘도전’이었습니다. 현재까지의 세이프존(safe zone)을 버리고 정말 큰 ‘도전’을 한다면 역설적이게도 지금까지 지켜온 객체지향 원칙이나 테스트 코드 작성 등을 오히려 더 지키기 어렵게 만들었습니다.

네, 그래서 저도 객체지향 원칙은 거의 지키지 못했고 그나마 MVC패턴으로 클래스를 분리하고 도메인을 나눈 것 정도가 전부고 테스트 코드는 한 클래스에 여러 절차적 코드가 섞여 차마 테스트 하기 어려운 그런 코드가 완성됐습니다.

심지어 실제 데이터베이스인 MySQL의 코드를 오픈 소스에서 살펴보니 대부분이 switch문으로 이루어져 있었습니다. switch문을 쓰는게 row level 프로그램에서는 성능상 이점이 있기 때문이었습니다.

하지만 우리는 지금까지 객체지향 원칙을 지키며 switch문을 지양해야 했습니다. 이런 부분들에서 많은 고민이 생겼습니다.

 

분명 정답은 없을텐데 “앞이 안보이면 우선 돌아가는 쓰레기라도 만들어보자”는 마음으로 매일매일 학습한 내용과 구현한 내용을 기록하며 미션을 진행했습니다.

 

 

3. 데이터베이스 프로그램 설계의 아쉬움

데이터베이스가 정말 다양한 기능을 포함하고 있고 복잡한 설계가 들어간 소프트웨어라는 것을 직접 만들어보며 제대로 느낄 수 있었습니다.

매번 새로운 주요 기능을 구현할 때면 이전 코드들에도 많은 수정이 필요했습니다. 이런 부분이 MySQL의 코드의 많은 부분이 절차적으로 짜여진 이유가 아닐까 생각했습니다.

예를 들면, 먼저 데이터베이스 크래쉬 상황에서 recovery를 위한 redo log를 저장하는 기능이 있고 이를 트랜잭션끼리의 격리를 보장하기 위해 undo log처럼 쓰는 상황에서

처음에는 데이터베이스 크래시 상황에서 복구를 위한 redo log를 남기는 기능만을 생각하고 설계를 시작했습니다. 그런데 이후에 트랜잭션 간의 격리를 보장하기 위해 undo log와 비슷한 역할을 하는 기능이 필요해졌을 때, 이미 작성해 둔 로그 모듈이 “크래시 복구”에만 초점이 맞춰져 있어서 그대로 재사용하기가 어려웠습니다.

“어차피 로그니까 하나의 구조로 같이 다루면 되지 않을까?” 하고 단순하게 접근했다가, 나중에 가서는 redo와 undo의 목적, 쓰기 타이밍, 저장해야 하는 정보 구조가 서로 다르다는 것을 뒤늦게 체감했고, 그때부터는 기존 코드를 우회하는 식의 수정이 많아졌습니다.

 

 

느낀점

 

자유로움 속에서 방향을 잡느라 헤어나지 못한 3주가 된 것 같습니다. 미션이 끝나고 다시 코드를 봤을 때 아쉬운 점이 많이 보였고, 다시 설계한다면 저렇게 안할것 같은데.. 라는 생각이 들기도 했습니다. 가장 아쉬운 점은 객체지향적으로 1,2,3주차 때 배운 원칙을 지킨 코드를 끝까지 원칙을 지키며 작성하지 못했다는 점입니다.

많은 아쉬움과 후회도 드는 오픈 미션이었습니다. 이런 과정 또한 성장의 발판으로 생각하며 최종 코딩테스트를 기다리며 다시 달리려고 합니다. 4주차 간 특별한 미션을 준비해주신 우아한 테크코스 운영진 여러분과 지원자 분들 너무 고생 많으셨습니다!

'우아한 테크코스 프리코스' 카테고리의 다른 글

[우아한 테크코스 8기 백엔드]프리코스 3주차 회고 -로또-  (0) 2025.11.04
[우아한 테크코스 8기 백엔드]프리코스 2주차 회고 -자동차 경주-  (0) 2025.10.29
[우아한 테크코스 8기 백엔드]프리코스 1주차 회고 -문자열 덧셈 계산기-  (0) 2025.10.21
'우아한 테크코스 프리코스' 카테고리의 다른 글
  • [우아한 테크코스 8기 백엔드]프리코스 3주차 회고 -로또-
  • [우아한 테크코스 8기 백엔드]프리코스 2주차 회고 -자동차 경주-
  • [우아한 테크코스 8기 백엔드]프리코스 1주차 회고 -문자열 덧셈 계산기-
dev_noonoo
dev_noonoo
인생의 스노우볼을 굴리는 개발자 누누(이재혁)의 블로그입니다.
  • dev_noonoo
    개발자 누누님의 블로그
    dev_noonoo
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • 운영체제 (0)
      • 네트워크 (5)
      • DB (5)
      • 코딩테스트 (0)
      • 아키텍처 (7)
      • 회고 (1)
      • 언어(java, kotlin, python ..... (5)
      • 우아한 테크코스 프리코스 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    redis
    MySQL
    좋아요api
    filesort
    분산락
    Using temporary
    정렬방식
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
dev_noonoo
[우아한 테크코스 8기 백엔드]프리코스 4~6주차 회고 -오픈 미션-
상단으로

티스토리툴바