HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 타일러팀
[New] 타일러팀
/
코코아 헤어샵
코코아 헤어샵
/
🛠️
기술 스택 세부
🛠️

기술 스택 세부

기술 스택 선택 조건

  • 조직에게 익숙하거나, 러닝커브가 감당할 수 있는 수준인가?
  • 다양한 라이브러리를 사용할 수 있는가?
    • 마이너한 기술 스택을 사용하게 된다면 커뮤니티의 사이즈가 작고, 직접 만들어야 하는 도구의 범위가 넓어질 수 있다.
  • 예약 시스템 특징을 위한 기술 스택을 선택해야 한다.
 

1. Programming Languages

Java 11

  • 조직에게 가장 익숙하다.
  • Java 8, Java 11, Java 17 LTS 버전 중 하나를 선택하려고 하였다.
    • LTS(Long Term Support)
      • 장기간에 걸쳐 지원
      • 보안 업데이트와 버그 수정이 지원된다. (안정성 확보)
  • Java 8 부터 새롭게 만들어진 기능들을 모두 사용할 수 있다.
    • lambda, stream API, 새로운 날짜와 시간
  • 현업에서 Java 8과 Java 11 버전이 가장 많이 사용되고 있다.
    • Java 17 (2021년 9월) 출시
  • Java 17에서 새롭게 추가된 기능 record, 스위치 표현식 등의 기능들을 사용하지 않기 때문에 Java 17까지의 버전이 필요 없다고 결정
 

2. Backend

Spring Framework

  • 조직에게 가장 익숙하다.
  • 웹 어플리케이션을 만들기 위해 Spring에서 제공하는 도구가 다양하다.
    • Spring Security, Spring Jdbc
    • 외에도 Spring 생태계에서 필요에 따라 쓸 수 있는 다양한 라이브러리가 있다.

Spring Data JPA

  • 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
  • 재사용 및 유지보수의 편리성을 증가한다.
    • 특정 DB에 한정 되지 않기 때문에 나중에 어떤 DB로든 쉽게 migration 가능
 

3. Database

배경과 요구사항

  • 모든 스키마가 고정되어 있다.
  • 예약 시스템이므로 빈번한 update 발생

RDB vs NoSQL

⇒ RDB 선택
  • ‘NoSQL은 schemaless여서 유연한 형태로 데이터를 저장할 수 있다’ 하지만 우리가 개발하려는 프로젝트는 스키마가 유동적이지 않기 때문에 RDB를 선택하는 것이 더 좋다고 판단.
  • RDB는 NoSQL보다 scale out에 어려움이 있다.
    • 프로젝트 과정에서 scale out 상황을 고려하지 않을 것이다.
    • RDB에서도 master-slave 모델을 사용하면 문제를 해결할 수 있다.
      • 이를 통해 어느 정도 수준의 서비스 트래픽을 감당할 수 있다.

MySQL

  • 조직이 MySQL에 익숙한 상태
  • 비용이 발생하지 않는다.
  • Update 기능이 다른 RDMS(Postgresql) 보다 우수하다.
  • nested loop join 기능이 다른 RDMS 보다 우수하다.
Nested Loop Join 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 Row를 결합하여 원하는 결과를 조합하는 조인 방식
 

4. 협업 Tool

Gihub

  • 조직에게 가장 익숙하다.
  • Gihub에 내장되어 있는 이유 트래커(GitHub Issues), 특정 브랜치를 향한 pull Request 등의 기능은 협업을 하기에 매우 유용하다.

Jira

  • 애자일 Scrum 방식의 협업을 진행하기로 계획
    • 작은 주기(Sprint)로 개발 및 검토
    • 에픽, user story, task 단위로 작업을 나눈다.
  • Scrum 방식으로 협업을 진행하는데 있어서 Jira의 기능이 가장 최적이라고 생각되었다.

Notion

  • 프로젝트 진행시 다양한 문서작업 필요
    • 회의록, 기능 명세서, API 명세서, 회고록 등
  • 문서 작업을 빠르고 편리하게 진행할 수 있다.