본문 바로가기
기록, 회고/InFlearn Warming-up 0기 BE

[11일 차] - 내용 정리(배포, Git 기초 사용 방법, AWS EC2), 개인 회고

by TwoJun 2024. 3. 2.
728x90
반응형

인프런에서 주최하는 Warming-up 클럽 0기 백엔드 스터디에 참여하고 있다.

 

스터디에 참여하면서 배우게 된 내용을 전체적으로 정리하고, 참여하면서 느낀 부분을 회고해 보고자 한다.

 

(1) 11일 차 : 2024-03-04(Mon)

 

 

 

 

1. 배포(Deployment)

1-1. 배포(Deployment)와 Profile

(1) 애플리케이션의 배포는 개발한 소프트웨어를 최종 사용자가 이용 가능한 상태로 전달하는 과정 자체를 의미한다.

 

(2) 배포를 하게 되면 로컬 환경에 존재하는 모든 애플리케이션, DBMS 등의 프로그램들을 서버용 컴퓨터로 옮길 수 있다.

 

(3) 로컬과 서버용 컴퓨터에서 모두 동일한 서버 코드를 실행시키지만, 로컬에서 실행할 때는 로컬에서의 DBMS를, 서버용 컴퓨터에서 실행할 때는 서버용 컴퓨터에 설치된 DBMS를 사용해야 한다.

 

(4) 위와 같이,  똑같은 서버 코드를 실행시키지만 실행 시 설정(실행 환경, 장소에 따라 각 다른 프로그램, 자원을 사용하는 것)을 다르게 하고 싶다면 profile을 사용할 수 있다.

 

(5) 아직 감이 오지 않을 수 있다 아래와 같이 profile을 적용시켜 보자.

 

 

 

 

2. Profile 적용, H2 Database

2-1. H2 Database

(1) 개발 단계에서 많이 사용되는 인메모리 데이터베이스 시스템으로 자바로 설계되어 있다.

 

(2) H2 DB를 사용하면 인메모리 특성상 애플리케이션을 재시동하면 기존 데이터가 소실된다. 따라서 ddl-auto 옵션을 create로 주면 생성된 테이블을 신경쓰지 않고 코드(비즈니스 로직)에만 집중할 수 있다.

 

 

 

 

2-2. Profile 적용

local : H2, dev : MySQL

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: 
    driver-class-name: org.mariadb.jdbc.Driver

  jpa:
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect

 

(1) application.yml을 다음과 같이 설정한다.

 

Edit Configuration

(2) Edit Configuration에서 Active profiles를 방금까지 설정했던 local 또는 dev로 변경해서 서버를 실행할 수 있다.

 

(3) profiles 설정을 통해 동일한 서버 코드를 실행시키면서 각각의 profiles 옵션 설정에 따라 각각 다른 DBMS를 적용시켜 서버를 실행해 볼 수 있었다.

 

 

 

 

 

 

3. Git & GitHub

(1) Git은 코드를 쉽게 관리할 수 있게 해주는 소프트웨어를 의미한다.

 

(2) GitHub는 Git을 기반으로 관리되는 프로젝트의 코드가 저장되는 Repository(저장소, 공간)를 의미한다. 

 

(3) GitHub는 로컬의 소스코드가 유실되거나 열어보지 못할 때를 대비해 GitHub와 같은 원격 저장소에 관리하여 관리할 수 있고, 배포 과정에서 활용될 수 있다.

 

(4) 배포는 로컬에서 동작하는 소스코드, 관련 라이브러리나 프로그램을 사용하는 것 대신에 서버 컴퓨터에 소스코드, 관련 라이브러리, 프로그램, 프레임워크를 옮겨서 실행할 수 있다. 이때 옮기는 과정에서 GitHub를 활용할 수도 있다.

 

 

 

 

 

4. Git 기본 명령어

4-1. git init

git init

(1) 프로젝트를 git이 직접적으로 관리하겠다는 의미를 가지고 있다.

 

 

 

4-2. git remote add origin [각자의 주소]

git remote add origin

(1) 해당 git 프로젝트의 github 저장소 설정

 

 

 

4-3. git add .

git add .

(1) 프로젝트의 모든 변경사항을 Git Staging area에 추가하는 명령

(2) Staging area에 파일을 추가하면 변경 내용이 커밋에 포함된다.

(3) git add [파일 이름]으로 특정 파일만 추가할 수 있다.

 

 

 

4-4. git statuts

git status

(1) git 저장소의 현재 상태를 체크하는 데 사용된다. 

(2) staging area에 커밋되지 않은 변경사항에 대한 정보와 현재 브랜치 정보가 출력된다.

 

 

 

4-5. git reset

git reset

(1) Hard reset으로 staging area의 모든 사항들을 초기화한다.

 

 

 

4-6. git commit -m "추가할 메시지"

git commit -m  "first commit"

 

 

 

4-7.  git push / git push --set -upstream(-u) origin master (최초 1회) 

git push
git push --set -upstream origin master
git push -u origin master

(1) 로컬 저장소의 커밋 사항을 원격 저장소로 업로드하는 데 사용된다.

(2) 두 번째는 origin 원격 저장소에 master 브랜치가 존재하지 않는 경우 새로운 master 브랜치가 origin 원격 저장소에 생성된다.

 

 

 

 

5.  AWS EC2

(1) https://aws.amazon.com/ko/free/?gclid=CjwKCAiAuYuvBhApEiwAzq_YiXt65cZ9F5HHEHU3akRhq3ebTX8Smvfb877k-RXS--Nhk_NGIxMagxoC0zoQAvD_BwE&trk=fa2d6ba3-df80-4d24-a453-bf30ad163af9&sc_channel=ps&ef_id=CjwKCAiAuYuvBhApEiwAzq_YiXt65cZ9F5HHEHU3akRhq3ebTX8Smvfb877k-RXS--Nhk_NGIxMagxoC0zoQAvD_BwE:G:s&s_kwcid=AL!4422!3!563761819837!e!!g!!amazon%20web%20services!15286221779!129400439506

 

무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어

이러한 프리 티어 혜택은 AWS 신규 고객에게만 제공되며 AWS 가입일로부터 12개월 동안 유효합니다. 12개월의 무료 사용 기간이 만료되거나 애플리케이션 사용량이 프리 티어 범위를 초과할 경우

aws.amazon.com

 

(2) AWS EC2(Amazon Web Service Elastic Compute Cloud)는 아마존 웹 클라우드 컴퓨팅 서비스 중 하나로써 사용자가 가상 서버 인스턴스를 생성하고 실행할 수 있는 확장 가능한 컴퓨팅 소스를 제공한다.

 

 

 

 

 

 

6. 개인 회고

(1) 개발만큼 배포와 운영 단계도 매우 중요한 과정이므로 이 부분을 잘 학습하고 프로젝트에 적용시켜볼 수 있도록 인사이트들을 찾아봐야 할 것 같다.

 

 

 

 

 

7. Reference

(1) 관련 레퍼런스는 인프런에서 활동하고 계시는 최태현 강사님의 온라인 강의를 듣고 내용을 정리했습니다.

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%84%9C%EB%B2%84%EA%B0%9C%EB%B0%9C-%EC%98%AC%EC%9D%B8%EC%9B%90/dashboard

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인

Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들

www.inflearn.com

 

※ 해당 포스팅에 대해 내용 추가가 필요하다고 생각되면 기존 포스팅 내용에 다른 내용이 추가될 수 있습니다.

개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있으며, 이에 대해 댓글로 알려주시면 감사하겠습니다

728x90
반응형

댓글