TIL/2024 원티드 프리온보딩 백엔드 인턴십

[TIL] 원티드 프리온보딩 백엔드 인턴십 Week2) 10일차, 0829

ryuneng 2025. 1. 22. 00:12
반응형

✔️ 오늘 한 일

  • 4차 오프라인 세션 참여
  • Docker - MySQL 연동
  • 데이터 파이프라인 관련 더미데이터 생성
  • 원본 서울시 맛집 데이터 전처리 구현
  • 가공된 서울시 맛집 데이터 저장 구현


👀 오늘의 이슈

1. 주소(csv 파일) 테이블과 맛집 가공 테이블의 연관관계

  • 배경
    • ERD 1차 설계 시, 주소 테이블이 맛집 가공 테이블과 1:n 관계를 맺고 있었다.
      그런데 오늘, 팀 회의에서 공공 API에 있는 도로명주소로 현재 ERD의 주소를 매핑시키기에는 무리가 있다는 의견이 나와 주소 관련 요구사항을 다시 한번 분석해 보았다.
  • 분석
    1. 주소 csv 테이블 : 주소로 검색 시 원하는 값을 선택하기 위해 존재하는 대한민국의 모든 주소 리스트로, (시군구까지만) 아래 맛집들과는 전혀 관련이 없는 테이블이다.
    2. 원본 맛집 테이블 - 공공데이터에서 받아오는 해당 맛집의 주소 문자열 전체를 포함한다.
    3. 맛집 가공 테이블 - 원본 맛집 테이블의 주소를 Service 계층에서 Builder 패턴을 이용해 가공하여 저장해야 한다.
  • 결론
    • 자세히 살펴보니 팀원분의 의견이 정확했다. 주소 csv 파일에 대한 이해가 부족했던 것 같다.
      1차 설계가 미흡했다는 점을 깨닫고 가공 맛집 테이블과 주소 테이블의 연관관계를 해제하게 되었다. 글로 정리하면서 문제를 더 명확히 이해할 수 있었고, 향후 설계 과정에서 요구사항 분석을 더욱 철저히 해야 한다는 중요한 교훈을 얻었다.

2. Entity 클래스의 PK 필드 타입 (long/int)

  • 배경
    • Entity 클래스의 PK 필드 타입을 long, int 중 어떤 타입으로 사용할지 고민함
  • 분석
    • 향후 확장성을 고려하여 유지보수를 위해 BIGINT(Long) 타입을 사용하는 것이 일반적이다.
      (Java의 Long 타입은 기본적으로 MySQL의 BIGINT 타입으로 매핑된다.)
    • 하지만, BIGINT 타입은 int 타입에 비해 디스크 용량을 더 많이 차지한다.
  • 결론
    • 현재 서비스 규모가 크지 않아 메모리를 덜 차지하는 int 타입으로 결정했다. 서울 음식점 전체 데이터 수는 금일 기준 약 51,000개로, int 범위 내에서 충분히 관리가 가능하다고 판단하였다.
      * int 타입 범위 : -2147483648 ~ 2147483647


💡 Today I Learned

1. 규모가 커지면 도메인별로 서비스 (깃 리포지토리) 등을 전부 분리하여 관리한다.

  • ex) 원티드 사이트 : 채용 탭 / 이력서 탭 / 커리어 탭 팀 전부 다름
  • MSA(MicroService Architecture) 웹의 서비스 발전에 따라서 나타났다.

2. YAGNI

  • YAGNI[1](You aren't gonna need it)는 프로그래머가 필요하다고 간주할 때까지 기능을 추가하지 않는 것이 좋다는 익스트림 프로그래밍(XP)의 원칙이다. 익스트림 프로그래밍의 공동 설립자 론 제프리스는 다음과 같이 썼다: "실제로 필요할 때 무조건 구현하되, 그저 필요할 것이라고 예상할 때에는 절대 구현하지 말라."

3. record 타입이란?

  • 순수하게 데이터만을 보유하기 위한 클래스 타입
  • Getter, toString, 생성자 등 불필요

4. 새로 접하는 모든 것은 낯설어서 어렵게 느껴지는 것이다. 도메인을 분석하고 이해하고 나면, 할 수 있겠다고 느껴진다.

  • 화요일 세션에서 2차 과제를 처음 받아보고 느낀 과제 난이도를 투표하고,
    오늘(목요일) 세션에서 현재 느끼는 난이도를 다시 투표해서 비교해봤는데, 확실히 난이도가 높지 않다는 평가가 많아졌다. 다들 이틀동안 요구사항을 분석하고 이해하면서 과제와 친해졌나보다.
    변화를 눈으로 직접 보니 정말 신기하고 재미있다 !
  • Before/After
    매우 어려움 > 어려움 > 보통 > 쉬움 > 매우 쉬움
    > 디스코드 이모지를 통해 투표했다. 귀엽다.

5. Docker를 이용하면 로컬에 DB를 설치하지 않고도 데이터베이스를 사용할 수 있다.

 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/TIL-원티드-프리온보딩-백엔드-인턴십-Week2-10일차-0829