Search

6. 생애 최초 배포 준비하기

1. 배포가 무엇인지 이해하고, 배포를 하기 위해 어떤 준비를 해야 하는지 알아본다.
2. 스프링 서버를 실행할 때 DB와 같은 설정들을 코드 변경 없이 제어하는 방법을 알아본다
3. git과 github의 차이를 이해하고, git에 대한 기초적인 사용법을 알아본다.
4. AWS의 EC2가 무엇인지 이해하고, AWS를 통해 클라우드 컴퓨터를 빌려 본다.

배포란 무엇인가

배포

최종 사용자에게 SW를 전달하는 과정

도서관리 애플리케이션의 현재 상황

내 컴퓨터에 우리가 작성한 코드, 스프링, MySQL 등이 모두 있다!
자 이제 내 컴퓨터에 있는 서버에 친구가 접속한다고 해보죠!

친구 (최종 사용자)가 우리의 서버를 쓸 수 있는 방법

방법 1. 친구가 집으로 직접 놀러온다...!

당연히 이상하고 불편합니다!!

방법 2. 친구의 컴퓨터를 이용해 우리 컴퓨터에 접속한다...!

방법 1에 비해 발전했지만, 문제가 있다. 우리 컴퓨터는 24시간 켜져 있지 않다! 우리 컴퓨터는 스프링, MySQL 외에도 문서 편집기, 게임, 비디오 재생 등을 처리한다!
방법 3. 전용 컴퓨터에 코드를 옮기고 스프링, MySQL 등을 설치해 친구가 접속하게 한다.

배포

최종 사용자에게 SW를 전달하는 과정 = 전용 컴퓨터에 우리의 서버를 옮겨 실행시키는 것

우리는 전용 컴퓨터가 없는데?

미국 쇼핑몰 아마존이 운영하는 AWS (Amazon Web Service)

AWS에서 무료로 전용 컴퓨터를 빌리자!

AWS에서 컴퓨터를 빌릴 때 한 가지 알아두어야 할 점!

우리가 컴퓨터를 살 때 운영체제(OS)도 같이 선택하죠!

서버용 컴퓨터는 보통 리눅스를 사용!

AWS를 이용한 간단 배포

profile과 H2 DB

전용 컴퓨터(리눅스)에 설치한 java / mysql을 실행
전용 컴퓨터에서 실행된 서버는 전용 컴퓨터에 있는 mysql을 사용
우리 컴퓨터에서 사용할 때는 우리 컴퓨터의 MySQL
전용 컴퓨터에서 사용할 때는 전용 컴퓨터의 MySQL
똑같은 서버 코드를 실행시키지만, 우리 컴퓨터에서 실행할 때는 우리 컴퓨터의 MySQL 전용 컴퓨터에서 실행할 때는 전용 컴퓨터의 MySQL

여기서 profile이라는 개념이 등장

똑같은 서버 코드를 실행시키지만, 실행될 때 설정을 다르게 하고 싶다! (지금 설정은 DB지만, 다양한 종류가 있다)

지금도 이 profile이란 것을 사용

서버 실행시키면 콘솔에 이렇게 찍혀있다.
활성화된 profile이 없어서 기본값인 profile을 사용하겠다는 뜻

Profile을 적용

똑같은 서버 코드를 실행시키지만, local 이라는 profile을 입력하면, H2 DB를 사용하고 dev 라는 profile을 입력하면 MySQL DB를 사용하게 바꾸자.

H2 DB란?!

경량 Database로, 개발 단계에서 많이 사용하며 디스크가 아닌 메모리에 데이터를 저장할 수 있다.

메모리에 데이터를 저장하면 휘발되지 않나요?!

네 맞습니다! 그래서 개발단계에서만 사용한다!
또한, 개발 단계에서는 테이블이 계속 변경되는데
어차피 데이터가 휘발되기 때문에 ddl-auto 옵션을 create로 주면 테이블을 신경쓰지 않고 코드에만 집중할 수 있다!

개발 단계에서는 데이터가 휘발되는 H2가 오히려 장점!

Profile을 적용해보자!

똑같은 서버 코드를 실행시키지만, local 이라는 profile을 입력하면, H2 DB를 사용하고 dev 라는 profile을 입력하면 MySQL DB를 사용하게 바꾸자.
application.yml에 dev일때만 mariaDB를 사용하게끔 하고
spring: config: activate: on-profile: dev datasource: url: "jdbc:mariadb://localhost/library" username: "root" password: "0126" driver-class-name: org.mariadb.jdbc.Driver jpa: hibernate: ddl-auto: none properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.MariaDBDialect
XML
복사
local일때는
spring: config: activate: on-profile: local datasource: url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER" username: "sa" password: "" driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.H2Dialect
XML
복사
근데 h2 DB에 접속할려면 설정해줘야할게 하나 더 있다
h2: console: enabled: true path: /h2-console
XML
복사
그래서 전체적으로 보면
spring: config: activate: on-profile: local datasource: url: "jdbc:h2:$mem:library;MODE=MYSQL;NON_KEYWORDS=USER" username: "sa" password: "" driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.H2Dialect h2: console: enabled: true path: /h2-console --- spring: config: activate: on-profile: dev datasource: url: "jdbc:mariadb://localhost/library" username: "root" password: "0126" driver-class-name: org.mariadb.jdbc.Driver jpa: hibernate: ddl-auto: none properties: hibernate: show_sql: true format_sql: true dialect: org.hibernate.dialect.MariaDBDialect
XML
복사

local , dev 에 맞게 실행시키는 방법

Edit Configurations..클릭
Active profiles에 local 이나 dev로 적고 실행시키면 알맞게 실행시켜준다

local로 실행시키면

콘솔에 이제 local profile로 활성화된걸 볼 수 있다.
http://localhost:8080/h2-console 접속하면
JDBC URL에 아까 우리가 설정해준
jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER
을 넣어주고 연결하면
쿼리도 실행된다

dev로 실행시키면

전에 넣어놨던 데이터도 잘 보인다.

git과 github 이란 무엇인가?

개발 공부를 시작해 이런저런 검색을 하다 보면...

git이란 무엇인가?!

코드를 쉽게 관리할 수 있도록 해주는 버전 관리 프로그램

다음과 같은 상황을 생각해보자!

개발자가 2명이 있고 만들어야할 기능이 5개가 있다.
기능 1과 기능 4를 동시에 개발하자!

각자 개발하는 것까지는 좋다~

원보코드에서 각자 기능을 개발했다.

결국 하나로 합쳐야 하는데..?!

하나의 코드로 합쳐야하는데 어떻게 합쳐야 할까

문제는 이제 생긴다...!

어떻게 합쳐야 하는가? – 서로 작업한 것만 복붙 할 수도 없고..
만약에 같은 파일, 같은 코드를 변경했다면?!

git 등장

코드를 쉽게 관리할 수 있도록 해주는 버전 관리 프로그램
손쉽게 버전 A, 버전 B를 만들 수 있게 해주고~
여러 버전을 손쉽게 합쳐준다!

github이란 무엇인가?!

git으로 관리되는 프로젝트의 코드가 저장되는 저장소

git이 관리 하는 프로젝트를 github에 저장할 수 있다!

왜 github에 코드를 저장하는걸까?!

내 컴퓨터에 있는 코드는 모종의 이유로 소실 될 수 있다!
배포를 할 때 활용할 수 있다!
이렇게 전용컴퓨터에 작업한걸 배포하는데
이때 옮기는 과정을 github이 도와준다

정리

git : 코드를 쉽게 관리할 수 있도록 해주는 버전 관리 프로그램
github : git으로 관리되는 프로젝트의 코드가 저장되는 저장소
git을 이용해 github에 우리가 개발한 <도서 관리 애플리케이션>을 업로드
github에 가입 먼저 해두면 된다.

git 기초 사용법

github 저장소부터 만들어보기

생성

IntelliJ Terminal을 이용해 git 명령어

git 프로젝트 시작하기

git init
Bash
복사
git init : 이 프로젝트를 이제 git이 관리하겠다.

git 프로젝트의 github 저장소 설정하기

git remote add origin [각자의 주소]
Bash
복사

이제 코드를 github에 올리기

택배를 보내는 것과 비슷하다!

택배 보내는 방법

1. 택배 상자를 가져와 물건을 담는다.
2. 택배 상자를 포장하고 송장을 붙인다. 이때 하고 싶은 말도 적을 수 있다.
3. 택배 상자를 우체국에 가서 부친다.

[1] 코드들을 택배 상자에 담는 명령어

git add . git add 파일이름
Bash
복사
git add .
Bash
복사
해서 모든 파일을 다 담았다가 그 후에 .gitignore로 gradle 폴더의 파일을 다시 빼는 설정을 했으면

다시 초기화시키기 - 담은거 도로 빼기

git reset
XML
복사
이러고 다시 담아주면 된다.

현재 상황 확인하기

git status
Bash
복사

[2] 택배 상자에 송장을 붙이는 명령어

git commit –m “메시지”
Bash
복사

혹시 다음과 같은 에러가 나온다면...!

이메일과 이름을 설정해주자!!

[3] 택배 상자를 github에 보내기

git push
Bash
복사

[3] 택배 상자를 github에 보내기 (최초 1회)

git push -–set-upstream origin master
Bash
복사

git 기초 명령어 정리

AWS의 EC2 사용하기

AWS 가입 과정

AWS 가입이 완료되었다면, 로그인

이제 AWS로부터 우리의 컴퓨터를 빌릴 것이다!

처음 가입하면 우측상단에 지역이 시드니로 되어 있는데 서울로 바꿔주자
좌측에서 EC2 검색하기
이제 EC2란거는 탄력적으로 원격 컴퓨터를 사용할 수 있다는 뜻이다.
언제든지 필요할 때 빌리고 필요없을 때 반납한다.
인스턴스라는건 우리가 빌린 컴퓨터를 말함.
선택해서 들어가면
인스턴스 생성
이름 정해주고 애플리케이션 OS는 그대로 아마존 리눅스로 냅둔다.
이러고 인스턴스 시작 눌러줌
이제 인스턴스 생성해주고 목록가보면

정리

1. 배포가 무엇인지 이해하고, 배포를 하기 위해 어떤 준비를 해야 하는지 알아 본다.
2. 스프링 서버를 실행할 때 DB와 같은 설정들을 코드 변경 없이 제어할 수 있는 방법을 알아본다.
3. git과 github의 차이를 이해하고 git에 대한 기초적인 사용법을 알아본다.
4. AWS의 EC2가 무엇인지 이해하고, AWS를 통해 클라우드 컴퓨터를 빌려본다.

*참고