IT 강의 정리/[스프링의 정석] 남궁성의 끝까지 간다

ch.01 Spring시작하기

Nellie Kim 2022. 9. 26. 16:39
728x90

01. Spring Framework는 무엇일까?

강의 내용

 1. Spring Framework를 배울 준비 - 개발도구, 설치, 설정

 2. Spring MVC - 웹의 기초, HTTP, TCP, IP

 3. Spring DI    

 4. Spring AOP  | Spring의 핵심 개념

 5. MyBatis - DB

 6. REST Api

 7. Spring MVC로 웹사이트 만들어 보기 with AWS

수업자료 : https://github.com/castello/spring_basic

 

02. Spring 개발도구 소개

1. 자바개발도구 : JAVA 11 (Java 11부터는 Oracle JDK와 open JDK가 동일)

 -  JDK 2가지

 1) Oracle JDK (공식)

 2) open JDK : IBM, RedHat(Linux), Amazon

 => openJDK : GA (General Availability : Product가 일반 대중도 사용할 만큼 개발됨)

 

Java Spec - 버전 3가지

 1) SE (Standard Edition) : 일반 사용자

 2) EE (Enterprise Edition) : Server (많은사용자가 사용하는 서버)

 3) ME (Micro Edition) : 소형기기(ATM등)

 

2. 통합 개발 환경 (IDE - Integrated Development Environment)

 - STS3 : Eclipse + Spring plugin (3.9.17버전 다운로드)

 - STS4 : Spring Boot 만 쓸수있음

 - Intellij (유료버전 다운로드 - 30일 무료)

 (이번 강의에서는 초반에 STS3쓰다가 IntelliJ로 넘어갈 예정.) 

 

3. 웹 서버 : Tomcat9 (JarkartaEE : JavaEE의 일부만 구현)

4. 웹 브라우저 : Chrome

5. 데이터베이스 : MySQL 5.7

6. 기타

- VS code

- Git (VCS. Version Control System) : 오픈소스. 파일의 버전을 관리해주는 시스템. 우리가 개발한 소스를 관리하는 프로그램. 소프트웨어뿐 아니라 모든 파일의 버전 관리가 가능하다.

  VCS는 SVN과 Git이 있다. Git이 조금 더 복잡하지만 강력하다. 대부분 Git을 많이 씀

 

- AWS

- Maven

 

03. Spring 개발설치 & 설정

1. Visual Studio Code 확장프로그램 설치

  Korean, Prettier(코드포맷팅), open in browser(Art + B로 브라우저화면보이기), indent rainbow(들여쓰기시 잘보이게 색상설정), Auto Rename Tag(이름수정시 짝태그 같이 수정)

 

2. JDK 제어판 환경변수 설정 

 1) 시스템 변수(S) - Path선택 - 편집 - 새로만들기 - JDK가 설치된 경로\bin

 2) 시스템 변수(S) - 새로만들기 - 변수 : JAVA_HOME / 값 : JDK가 설치된 경로 (내가 설치한 JDK가 JAVA_HOME이다!)

 3) cmd에서 javac -version 입력하면 버전이 출력. 나오지 않으면 환경변수 설정에 문제가 있는것

 

3. 톰캣 설정

톰캣\bin의 주소 cmd창에 붙여넣고 startup입력하면 실행, shutdown입력시 종료

톰캣의 기본주소:  localhost:8080. 화면이 잘 나오는지 확인

4. STS 실행후 Spring파일생성

압축 풀고 New - Spring Lagacy Project(Starter는 스프링부트용) - firstSpring파일생성

(여기서 download of template 'org.springframework.templates.mvc' failed 오류가 났다. 설정도 바꿔보고 oracle jdk11도 깔아봤는데 zulu jdk11을 설치하니 해결되었다. 물론 환경변수 설정도 다 바꿔야한다.)

 

5. 톰캣 실행

좌측하단 눌러 톰캣 파일위치 지정하고 서버 추가 - firstSpring우측버튼 Run As - Run on Server - finish 하면 서버가 올라온다.

아파치란?

아파치 소프트웨어 재단의 오픈소스 프로젝트이다. 일명 웹서버로 불리며, 클라이언트 요청이 왔을때만 응답하는 정적 웹페이지에 사용된다.

 

  • 웹서버 = 80번 포트로 클라이언트 요청(POST,GET,DELETE)이 왔을때만 응답함.
  • 정적인 데이터만 처리한다.(HTML,CSS,이미지 등).

 

톰캣이란?

dynamic(동적)인 웹을 만들기 위한 웹 컨테이너서블릿 컨테이너라고 불리며, 웹서버에서 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등은 웹 컨테이너(톰캣)에게 전달한다.

  • WAS(Web Application Server)
  • 컨테이너, 웹 컨테이너, 서블릿 컨테이너라고 부름 (컨테이너 : 동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈)
  • JSP,서블릿처리,HTTP요청 수신 및 응답
  • 아파치만 쓰면 정적인 웹페이지만 처리하므로 처리속도가 매우 빠르고 안정적이다.

하지만 톰캣(WAS)를 쓰면 동적인 데이터 처리가 가능하다. 아파치와는 다르게 DB연결,데이터 조작, 다른 응용프로그램과 상호 작용이 가능하다. 톰캣은 8080포트로 처리한다.

톰캣은 webserver에서 넘어온 동적인(서버가 데이터를 처리 후 생성) 페이지를 읽고 프로그래밍을 실행하고 결과를 html로 재구성해서 아파치에게 돌려준다.

 

아파치 톰캣의 기능은 나뉘어져 있지만,
톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에 보통 아파치 톰캣으로 합쳐서 부른다.

 

서블릿(servlet)이란?

클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스.
java.servlet.package에 정의된 인터페이스로서 서블릿의 라이프 사이클을 위한 세 가지 필수적인 메소드들을 정의한다.

  • init()
  • service()
  • destory()

 

05. AWS에 서버 구축하기

원격서버에 톰캣을 설치하고 접속해보자.

 AWS란?

 Amazon에서 제공하는 Cloud Service

 - Internet Cloud Computing : Cloud Service를 통해 요청하는 만큼 Server에서 사용 가능

 관리가 쉽고 빠르고 유연한 확장성을 가지며, 필요할 때만 사용하고, 사용한 만큼만 지불 (하드웨어 추상화)

 

 - Amazon EC2

 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공하는 웹 서비스

 => 웹 호스팅, 인스턴스(가상 컴퓨터. Vertual Machine)생성 및 windows + tomcat 설치

 

 - Amazon S3

 확장성, 가용성, 내구성을 가진 데이터 저장 공간 (Simple Storage Service)

 * 가용성 : 여러 instance에서 접근 가능,  내구성 : 데이터 손실시 복구 보장 (Durability)

 

 - Amazon RDS (Relational Database Service)

 관계형 DB관리 서비스, 관계형 DB(MySQL, Oracle 등)을 모니터링 및 주기적 백업

  EC2에 직접 DB를 설치하면 우리가 직접 모니터링, 백업을 해야해서 불편하다. 그래서 보통 RDS에 DB관리를 맡긴다.

 * DB는 Instance와 RDS를 통해 관리 가능

 

[참고] 관련 용어  
on-Premise : 서버를 직접 운영하는 방식. 관리자 필요. 요즘에는 Serverless로 가는 추세.
Serverless : 서버 작업을 서버내부가 아닌 클라우드 서비스로 처리. RDS를 Serverless라고 한다.
Region : 데이터 센터가 물리적으로 존재하는 곳. (최근에 서울region이 생겨 편하게 사용가능)  
CDN(Content Delivery Network) : 정적 리소스를 빠르게 제공할 수 있게 전세계의 캐시서버에 복제해주는 서비스.  

 

06. AWS에 서버 구축하기 

 1. 인스턴스 생성하기

 EC2 -> Instance 시작 -> AMI(Microsoft Windows Server Base): windows 선택 -> key-pair 생성(RSA)(.pem) -> 바탕화면에 key-pair다운로드 ->인스턴스 시작

 

2. 가상 클라우드 서비스(Tomcat)에 접속

 1) AWS에서 서버컴퓨터 원격접속

  - 인스턴스에 연결 -> RDP Client -> 원격 데스크톱 파일 다운로드

  -> RDP 클라이언트 탭에서 암호해독을 통해 사용자 ID + PW를 통해 원격 접속

내가 만든 가상 컴퓨터가 나타남

 

  2) JDK11, Tomcat9 다운로드 및 설정 (원래 했던 것과 동일)

 - github/castello/spring_basic 에서 jdk, tomcat 링크로 다운로드 받고 C드라이브로 옮겨 압축풀기

  -> JDK) 원격컴퓨터에 환경변수 설정(control - env검색 - path에추가 - JAVA_HOME설정)

  -> 톰캣 - bin - startup파일클릭 - 서버 올라옴

  -> http://localhost:8080 접속 - 잘 나오는지 확인

 

  3) 방화벽설정(Windows Defender Firewall) 하고 IP주소로 톰캣 접속

   - 윈도우) Advanced Setting ->Inbound Rules -> new roles -> port -> Specific localhost:8080 생성

  - AWS)  EC2보안그룹(Instance) -> 인바운드 규칙 (모든 TCP 허용) (이렇게되면 원격컴퓨터와 AWS의 방화벽이 열린것)

  -> 인스턴스 -> 네트워킹 -> 퍼블릭 IPv4 주소 + :8080 을 통해 -> 주소창에 입력해서 가상 클라우드 서비스 접속(Tomcat)

서버 컴퓨터로 톰캣 접속 완료!!!

 

출처 : [패스트캠퍼스] 스프링의 정석 : 남궁성과 끝까지 간다