티스토리 뷰

Infra

Java - Springboot 기반 세팅

lluna 2021. 12. 10. 21:00

서버를 구축하고 개발환경을 세팅하는 과정은 프로젝트의 시작이다.

나는 백엔드 개발을 지향하지만, 2학기 프로젝트에서 전공자와 섞이게 될 경우 전공자가 java로 백엔드 개발을 하고 싶어 할 수도 있다.

...

가장 좋은 시나리오는 내가 Django로 인프라단까지 구축을 해보고 자신있게 백엔드를 하겠다 하는 것이다.

서버와 인프라에 대한 이해를 위해 두 가지 버젼으로 알아보았다.

 

Python - Django 기반 세팅

서버를 구축하고 개발환경을 세팅하는 과정은 프로젝트의 시작이다. 나는 백엔드 개발을 지향하지만, 2학기 프로젝트에서 전공자와 섞이게 될 경우 전공자가 java로 백엔드 개발을 하고 싶어 할

ninefloor-design.tistory.com


Java - Springboot 

클라우드는 AWS EC2, Amazon S3, Amazon RDS

1. 컴퓨팅 

EC2 : mazon Elastic Compute Cloud, EC2 

가상컴퓨터를 임대받아 어플리케이션을 실행할 수 있다. 사용자는 서버 인스턴스를 만들고 시작, 종료할 수 있다.

 

2. 스토리지 및 콘텐츠 전송

S3 : Amazon S3, Simple Storage Service

온라인 웹 스토리지 서비스이다.

 

3. 데이터베이스

아마존 관계형 데이터베이스 서비스(Amazon Relational Database Service) 

분산 관계형 데이터베이스로, 앱 내에서 관계형 데이터베이스를 설정, 운영, 스케일링 가능하다.

개발환경은 docker 로 구성할 것이다.

웹서버는 Apache와 NGINX 중 후자를 선택할거라 예상한다.

대용량 데이터라 하더라도 Apache 까지 갈 필요는 없고 좀 더 빠르고 성능좋은 NGINX를 사용하게 될 것이다.

웹서버를 통해 정적 리소스를 제공할 수 있다.

웹서버는 보안 등 다음과 같은 역할을 수행할 것이다.

- reverse proxy : 서버의 정보(내부 구조, 포트)를 감춘다.

- load-balancing : 서버 트래픽이 많이 들어올 경우 여러 WAS로 분산한다.

- cashing : 웹서버의 리버스 프록시, 자주 쓰이는 리소스를 바로 전달한다.

 

Apache는 MPM 다중프로세스 방식으로 새 요청마다 프로세스를 새로 생성하거나 한 프로세스 안에서 스레드를 새로 생성한다.

- mpm_prefork : 새 요청마다 프로세스 새로 생성

- mpm_worker: 한 프로세스에서 스레드를 새로 생성

이 방식은 context-switching이라 리소스 소모가 크다.

 

반면 NGINX는 Event-driven 방식으로 코드스위칭이 적어 성능적으로 뛰어나다.

따라서 팀프로젝트 단위에서는 NGINX 가 유력하다.

 

웹프론트엔드는 Vue.js가 유력하다. 

SSAFY에서 배운 프레임워크이기도 하고 대부분의 구현에 부족함이 없다.

React를 따로 공부한 FE 개발자가 있다면 React도 사용할 수 있다고 본다.

 

백엔드는 Springboot 를 사용할 것이다.

스프링부트에는 고양이들이 내장되어 있다.

Tomcat (인스턴스)는 web application server, WAS 라 하며 동적 사이트 처리를 위한 웹어플리케이션 서버이다. 

톰캣 서버가 여러개 돌면서 안정성 있는 서비스를 제공한다.

'Infra' 카테고리의 다른 글

Dockerize Vue.js  (0) 2021.12.26
Docker Official Doc  (0) 2021.12.26
Python - Django 기반 세팅  (0) 2021.12.10
댓글