Study/Project

[프로젝트 기술스택 정리]

토기발 2023. 6. 15. 00:08

프로젝트를 본격적으로 시작하기 전에 먼저 사용할 기술 스택 및 아키텍쳐를 먼저 정리해보기로 했다.

 

본 포스팅은

1. 기술 소개
2. 해당 기술을 선택한 이유 (기술의 장점, 다른 기술과의 차이 등)

에 맞춰 설명한다.

 

 


 

 

Backend

 

  • Spring Boot

Spring과 Spring Boot의 개념과 차이

https://dsdsds.tistory.com/58

 

내장된 톰캣을 제공하여 웹 서버를 설치하지 않아도 서버를 바로 실행할 수 있다.
Spring이 지원해주는 IoC,DI 등 많은 설정들이 자동화되어 비즈니스 로직에만 집중이 가능하다.

 

 

Frontend

  • Thymeleaf

자바 라이브러리이며, 웹과 환경 양쪽에서 TEXT, HTML, XML, Javascript, CSS를 생성할 수 있는 템플릿 엔진이다.

natural template과 서버사이드 렌더링 기반이며 스프링에서 권장하고 지원하는 특징을 가지고 있다.

 

natural template : 순수 html을 유지하면서 view template도 사용할 수 있는 타임리프의 특징

서버사이드 렌더링: 서버에서 렌더링 작업을 완료하고 결과물을 화면에 전달하는 방식으로 검색엔진 최적화와 빠른 페이지 렌더링을 위해 사용한다.

스프링에서 권장: Spring Boot에서 Dependency만 추가하면 자동으로 설정되어 간편하게 사용할 수 있다.

 

vs JSP

 

- 순수 HTML

타임리프는 순수 html을 최대한 유지하고 있다. 

따라서 웹브라우저에서 파일을 직접 열어서 내용 확인이 가능하다.

반대로 jsp는 html안에 자바 코드 등이 삽입되어 순수 html을 유지하기 어렵다.

때문에 오직 서버를 통해서만 렌더링되고 html응답결과를 받아야만 화면을 확인할 수 있다.

 

- Servlet 형태로 변환

타임리프는 서블릿으로 변환되지 않으므로 비즈니스 로직이 완전히 분리된다.

jsp는 서블릿으로 변환되어 실행되는데, 서블릿은 자바소스이기 때문에 jsp에서 자바코드를 사용하는 것이 가능하다.

따라서 view에 비즈니스 로직이 포함되어서 복잡해지고 무거워진다. 

 

Infrastructure

  • AWS

인지도 및 시장 점유율이 가장 높다.
고객의 요구사항을 충실하게 서비스에 반영하고 있으며 많은 옵션들이 있다.
2015년 가트너(Gatner)의 보고에 따르면 장애 발생 시간(서비스 다운 타임) 역시 사업자 1위인 AWS이 가장 우수하다고 한다.

 

- EC2 (Elastic Compute Cloud)

 

아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스

사용한 만큼 비용을 지불하기 때문에 탄력적인 이라는 의미의 Elastic이라는 단어가 붙어있다.

Elastic은 비용적인 부분 뿐만이 아니라 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다는 의미도 가지고 있다.

 

클릭 몇 번으로 서버를 생성할 수 있기 때문에 실제 서버를 구축하는 것보다 훨씬 간편하고 효율적이다.

 

  • Ngnix

비동기 Event-Driven 구조로, 하나의 스레드 내에서 여러 클라이언트 요청을 처리하는 구조이다.

적은 양의 스레드만 사용되기 때문에 Context Swiching 비용이 적고, CPU 소모가 적다.
대용량 트래픽을 처리하기 위해 가벼움과 높은 성능을 목표로 한다.

 

DB

  • JPA

JPA의 개념과 장단점

https://dsdsds.tistory.com/119

 

JPA를 사용하지 않고 직접 쿼리를 작성하는 것과 비교했을 때 보다 객체지향 개발이 가능하다.
직접 쿼리를 작성하는 것에 비해 유지보수가 더욱 용이하다.

 

  • MariaDB

MySQL의 창시자가 MySQL 데이터베이스 시스템을 fork한 서비스로 MySQL의 개선된 버전이다.

MySQL과의 호환성이 매우 높으며 MySQL에서는 찾을 수 없는 수많은 강력한 기능이 내장되어 있고,

많은 유용성, 보안 및 성능 개션사항이 제공된다. 오픈 소스.

 

vs NoSQL

이번 프로젝트는 유저-구매내역, 서비스-버전관리 등 join이 많이 필요하다. 때문에 관계를 정의하지 않고 join이 불가능한 nosql은 후보에서 제외하였다.

 

vs MySQL

  MySQL MariaDB
스토리지 엔진 MariaDB에 비해 스토리지 옵션이 적다. 12개의 스토리지 옵션이 있다.
속도 개선 MariaDB에 비해 속도가 느리다. MySQL에 비해 향상된 속도
출시일 1995년 2009년
캐싱/인덱싱 MariaDB에 비해 느리다. MariaDB의 메모리 스토리지 엔진을 사용하면 표준 MySQL보다 INSERT 문을 24% 더 빠르게 완료할 수 있다.
Connection
Pool
시간당 최대 200,000개 이상의 연결을 지원하지 못한다. 시간당 최대 200,000개 이상의 연결을 지원한다.
데이터 마스킹 X O
Dynamic
columns
X O

 

 

  • RDS

데이터베이스를 간편하게 클라우드에서 설정, 운영, 확장이 가능하도록 지원하는 서비스이다.

기본 서버와 데이터베이스 서버를 분리하여 관리하면 N:1 확장성, 보안, 편리성의 이점을 지닌다.

 

vs EC2 데이터베이스 직접 설치

지불 비용만으로 비교하면 EC2에 데이터베이스를 직접 설치하는 것이 저렴하나, RDS를 사용하면 OS 및 데이터베이스의 설치 및 관리, 업데이트를 따로 할 필요가 없다.
또한 AWS 콘솔이나 AWS API를 통해 손쉽게 백업이나 복구(recovery)가 가능하여 잠재적으로 보았을 때 비용 절감이 가능하다.

 

 

VCS

  • github

 

 

 


 

 References

 

https://www.guru99.com/mariadb-vs-mysql.html

https://danpung2.tistory.com/38

https://velog.io/@come_true/Thymeleaf

https://velog.io/@server30sopt/AWS-EC2-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC