본문 바로가기
프로젝트/도서관리 프로젝트

도서관리 프로젝트[10] git, github, AWS, EC2, 배포

by CodeMango 2023. 6. 28.
목표

1. git과 github의 차이를 이해하고, git에 대한 기초적인 사용법을 알아본다.

 

2. AWS의 EC2가 무엇인지 이해하고, AWS를 통해 클라우드 컴퓨터를 빌려본다.

 

배포란?

서버에 반영하는 것!

 

배포할 때, 서버는 보통 리눅스에서 실행하게 되는데,

전용 컴퓨터(리눅스)에 설치한 java/mysql을 실행해야 합니다.

 

따라서 똑같은 서버 코드를 실행시키지만,

우리 컴퓨터에서 실행할 때는 우리 컴퓨터의 MySQL

전용 컴퓨터에서 실행할 때는 전용 컴퓨터의 MYSQL에서 실행해야 합니다.

 

 

profile

이처럼 똑같은 서버 코드를 실행시키지만, 실행 장소, 환경에 따라 설정을 다르게 하고 싶을 때  profile이라는 개념이 등장합니다!

지금까지 만들었던 스프링부트 프로젝트에서도 profile을 이용하고 있었습니다.

해석해보면 활성화되어있는 profile은 없기 때문에 기본값인 default profile을 사용하겠다는 의미입니다.

 

profile을 프로젝트에 적용해보겠습니다.

H2DB란?

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

메모리에 데이터를 저장하면 데이터가 휘발되므로 개발단계에서만 사용합니다!

실제 사용자에게 쓸 때는 MySQL, 가볍게 쓸 때는 H2DB를 사용하면 됩니다.

개발단계에서는 테이블이 계속 변경되므로 ddl-auto옵션을 create로 주면 테이블을 신경쓰지 않고 코드에만 집중할 수 있습니다. 

ddl-auto옵션은 application.yml에서 찾을 수 있습니다.

그럼 다시 profile을 적용하겠습니다.

local이라는 profile을 입력하면 H2DB 를 사용하고 dev라는 profile을 입력하면 MySQL DB를 사용하게 바꾸겠습니다.

 

그다음으로 application.yml 파일을 수정합니다.

spring:
  config:
    activate:
      on-profile: local
#      local profile일 때만 작동
  datasource:
    url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER"
#    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
#       h2콘솔에 접속할 수 있게 한다
      path: /h2-console
      

#---를 사용해 분리
---
spring:
  config:
    activate:
      on-profile: dev
#           dev profile일 때만 작동
  datasource:
#    mysql에 접근. library = 접근하려는 데이터베이스
    url: "jdbc:mysql://localhost/library"
    username: "root"
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect

코드 해설

• spring.config.active.on-profile

- 어떤 profile에서 아래 활성화되는 설정인지 지정한다.
- 예를 들어 1ocal profile은 구분선 . 위까지의 설정을 가지고 있다.


• idbc:h2:mem: library;NON_ KEYWORDS=USER
- H2를 사용하기 위한 url을 설정해 주었다.
- 특이사항으로는, USER라는 키워드를 테이블에서 사용할 수 있도록 처리해주었다.
   이 설정이 없다면, H2 DB에서는 user라는 키워드가 예약어로 잡혀 있어 사용할 수 없다.


• datasource .username
- H2의 유저 이름을 선택해 주었다. H2는 직접 설치한 게 아니기 때문에 아무 문구나 적어주어도 괜찮다.
- 잠시 후 H2 web console에 들어갈 때 입력하게 된다.


• datasource.password
- H2의 유저 비밀번호이다. 마찬가지로 잠시 후 H2 web console에 들어갈 때 입력 하게 된다.


• driver-class-name: org.h2.Driver
-  DB와의 접속을 담당하는 Driver 역시 H2의 Driver를 사용하도록 변경해 주었다.


• jpa.hibernate.ddl-auto: create
- H2 DB를 In-Memory로 설정했기 때문에 서버가 시작될 때마다 테이블을 제거하고 만들어주는 것이 좋다.

-  그래야 개발 과정에서 테이블이 계속 바뀌더라도 DB를 신경 쓰지 않고 개발할 수 있다.


• jpa.properties.dialect: org.hibernate.dialect.H2Dialect
- H2를 사용하게 바뀌었기 때문에 JPA의 방언 역시 H2bialect 로 변경해 주었다.


• h2.console.enabled: true
- H2 web console을 활성화한다. 이제 곧 들어갈 것이다!


• h2. console.path: /h2-console
- 활성화된 H2 web console의 주소를 의미한다. 이 주소로 들어가면 된다!

 

 

profile변경 

이제 서버를 실행할 때 profile을 변경하는 방법을 알아보겠습니다.

인텔리제이 상단의 Library~를 클릭하고 Edit Configurations으롣 들어갑니다 

 

local로 실행하고 싶다면 Active profiles에 local이라고 적고, dev로 시작하고 싶다면 dev라고 적으면 됩니다. 

서버를 재시작하면 아래와 같이 console창에 active:local 이라고 써있는걸 볼 수 있습니다.


 

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

 

개발자 A와 B는 기능1과 기능4를 동시에 개발해야 합니다.

 

이때, 이렇게 각자 개발할 수 있습니다. 

그런데, 결국엔 하나로 합쳐야 합니다

이때, 많은 문제가 생기므로 이런 상황에서 코드를 쉽게 관리할 수 있게 해주는 git이 등장했습니다.

git이 여러 버전을 손쉽게 합쳐주는 것입니다!

 

 

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

 

 

왜 github에 코드를 저장할까요?

내 컴퓨터에 있는 코드는  모종의 이유로 소실될 수 있기 때문입니다! 

배포를 할 때도 이를 활용할 수 있습니다.

이제 github에 프로젝트를 올리기 위해, 인텔리제이에서 터미널을 써보겠습니다.

인텔리제이 하단의 Terminal 을 클릭합니다.

아래의 명령어를 차례대로 입력합니다.

1. git init  : 깃 시작


2. git remote add origin [깃허브 주소]

3. git add .   : git 추가 ( .은 모든 파일을 뜻함 )

4. git status  : 현재 상태 확인하기

이렇게 하면 build같은 설정파일까지 담기게됩니다.
설정파일을 지우는 방법은 reset으로 담긴것을 지운다음 gitdignore파일을 만들어서 제외할 폴더를 적어주는 것입니다.


5. 프로젝트에 .gitignore 파일 생성
하고 사용하지 않을 폴더 이름 작성해놓기


6. git reset   : git 리셋하기

8. git add .   : git에 추가하기

9. git commit -m "메시지"   :  저장하기

10. git push --set-upstream origin master : 깃허브에 올리기 (깃허브에 처음 올릴 때 최초 1회에 한해 쓰는 push 명령어)


 

EC2


AWS EC2는 Amazon Web Services의 Elastic Compute Cloud의 약자입니다.

클라우드 컴퓨팅 서비스로, 가상 서버를 제공하는 서비스입니다.

 

즉, 가상 서버를 제공하는 서비스로, 클라우드에서 유연하고 확장 가능한 컴퓨팅 리소스를 프로비저닝하고 관리할 수 있도록 도와줍니다.

 

특징
1. 가상 서버

EC2를 사용하면 필요에 따라 가상 서버를 프로비저닝하고, 필요한 운영 체제를 선택하고, 

컴퓨팅 리소스를 구성할 수 있습니다. 

이 가상 서버는 인터넷을 통해 액세스할 수 있으며, 원격으로 제어하고 관리할 수 있습니다.

 


2. 다양한 운영 체제 지원

사용자는 Linux, Windows, macOS 등과 같은 다양한 운영 체제 중에서 선택할 수 있습니다. EC2 인스턴스는 사용자가 필요한 만큼 컴퓨팅 리소스를 확장하거나 축소할 수 있어, 유연하게 확장 가능한 환경을 제공합니다.

 

3. 애플리케이션
다양한 애플리케이션을 호스팅하고, 웹 애플리케이션, 데이터베이스, 분석 작업, 기계 학습, 그래픽 처리 등 다양한 용도로 사용될 수 있습니다. 

또한 EC2 인스턴스는 Amazon S3, Amazon RDS 등 다른 AWS 서비스와 통합하여 사용할 수 있으며, 보안 그룹, 네트워크 및 스토리지 설정과 같은 다양한 기능을 제공합니다.

 

4. 인스턴스 유형의 선택
EC2의 중요한 특징 중 하나는 사용자가 인스턴스 유형을 선택할 수 있다는 것입니다. 

다양한 유형의 인스턴스는 CPU, 메모리, 스토리지, 네트워킹 기능 등에서 다양한 성능과 용도를 제공합니다. 

이러한 유형 중에서 선택하면 자신의 요구에 맞는 가장 최적화된 컴퓨팅 리소스를 사용할 수 있습니다.

 

 

배포 과정

1. AWS 홈페이지에 들어가서 서버를 서울로 설정합니다

2. 상단에 EC2를 검색해 들어갑니다.

3. 인스턴스로 들어갑니다.

4. 상단의 인스턴스 시작을 누릅니다.

 

5. 목록을 설정합니다

이름 작성, 키 페어 생성 , 보안 그룹 생성 체크 후 인스턴스 시작을 누릅니다.

 

6. 그럼 아래와 같이 인스턴스 상태가 '실행 중'으로 바뀝니다.

댓글