반응형

- JavaBeans

 

 => JavaBeans란 자바로 작성된 소프트웨어 컴포넌트를 지칭하는 단어로 이 컴포넌트를 빈(Bean)이라고 부르며 썬사의 JavaBeans API에 정의된 스펙에 따라 만든다.

 => JavaBeans는 자바 관련 소프트웨어 개발에 있어 재사용이 가능한 표준 컴포넌트 모델이다.

 

 

- Beans

 

  => java 클래스들을 모아놓은 package 

  => Model, View, Controller(MVC패턴 구현)

     Model - 저장소역할( setXxx(), getXxx() 구현) - java코딩 

     View - GUI역할(클라이언트에게 보여줄 화면구성 구현 ) - jsp코딩

     Controller - DAO(데이터처리 담당 -DB연동)역할 , 비즈니스 로직

                     내부적으로 보이지 않게 처리해야하는 기능 구현 -java코딩, 서블릿문서

 

 => Beans를 이용하여 MVC패턴으로 구현함으로써 재사용성과 유지보수 용이

 => 이러한 MVC패턴을 기반으로 나오는 다양한 프레임웍이 있음.

 

===========================================================================================================================

 

*빈즈 규약

 

  [1] 기본 생성자가 반드시 존재해야한다. (인자가없는 디폴트 생성자)

  [2] 속성을 접급한고 꺼내올수있는 setXXX/getXXX메소드를 구성한다.

  [3] 속성을 지정(private)해야하는데 속성 이름은 보통 html의 form태그안에서 input 태그의 name속성 값과 같게 정한다.

 

*빈즈의 종류

 

  [1] 비쥬얼 컴포넌트 :  ex) JButton, JTextField......

  [2] 데이터빈즈 : 데이터를 담아두는 객체를 만드는 클래스 ex) StudentDTO, StudentVO.....등

  [3] 서비스빈즈 : 연산이나 서비스 기능 Beans즉, worker빈즈 ex) StudentDAO....등

 

*빈즈의 유효범위

  [1] page : 하나의 jsp페이지 내에서만 유효

  [2] request : 하나의 요청에 대한 처리관련 jsp페이지들에 유효, 포워딩 되거나 인클루드된 페이지에서 이 빈을 사용가능

  [3] session: 빈은 서버 파트의 기억 공간인 session객체에 저장됨, 하나의 사용자(브라우저)에대한 유효

       ** 유효시간 : 특정사용자가 웹브라우저를 닫을때까지 , 특정 설정이 없으면 30분동안 요청이 없을때까지(conf/web.xml에서 세션시간(Session time out)을 조정할수있다.)

 

  [4] application : JSP 애플리케이션과 생명주기를 같이함, 

                          서버가 종료되기전까지 메모리에 상주, 

                          웹 애플리케이션이 undeploy되기전까지 메모리에 상주

 

웹 애플리케이션 deploy -> 생성

웹 애플리케이션 undeploy -> 제거

 

  cf)크기

       page < request < session < application

===========================================================================================================================

 

 

 -Beans만들기

 

  1. Model의 역할 저장소(java문서)

 

   package gaon.bean;

   public class LoginBean{

 

     private Strig id;

     private int pwd;

 

      //전역변수 id, pwd에대한 setXxx()메소드와 getXxx()메소드 작성

     public void setId(String id){

this.id = id;

     }

     public String getId(){

return id;

    }

 

    public void setPwd(int pwd){

this.pwd = pwd;

   }

   public int getPwd(){

return pwd;

   }

}//end

 

 

  2. jsp영역에서 Beans사용법

 

    - beans 사용 선언

    <jsp:useBean id="별칭" class="사용할클래스이름" scope="beans의범위" />

        

      * id="bean" => bean이라는 이름으로 클래스에 있는 메소드 접근

      * class="gaon.bean.LoginBean"  => bean 이름으로 사용한 클래스선언

 

      * scope ="request | session | application | page"

             request => 사용자요청이 들어오는 순간에만 bean사용함.

             sssion => 클라이언트의 세션이 살았는동안 bean사용함.

             application => 서버시작 ~ 종료될때가지 bean사용함.

             page => 현재 페이지내에서만 사용함(기본값)

 

 

  - 선언된 Bean에 저장하기 ( Bean data를 저장 )

 

  <jsp:setProperty name="bean" property="id" /> 

     => bean 클래스에 있는 setId()호출됨

  <jsp:setProperty name="bean" property="*" /> 

     =>bean 클래스에있는  set으로 시작하는 모든메소드 호출됨

 

 

  -선언된 Bean의 데이터 가져오기

    <jsp:getProperty name="bean" property="id" /> 

      => bean클래스에 있는 getId()호출됨.

 

 

  

반응형

'Programming > Java' 카테고리의 다른 글

[Java] 거듭 제곱 구하는 방법 Math.pow()  (0) 2022.10.31
[Java] StringTokenizer 클래스  (0) 2021.09.25
[Java] printf  (0) 2021.09.11
DAO와 DTO(VO)의 차이점  (0) 2021.08.19
반응형

DAO(Data Access Object)

- 데이터베이스의 data에 접근하기 위한 객체이며 데이터베이스 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용한다.

DAO는 데이터베이스와 연결할 Connection까지 설정되어 있는 경우가 많다. 그래서 현재 쓰이는 MyBatis 등을 사용할 경우 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드물다.

 

DTO(Data Transfer Object)

- VO라고도 표현하며 계층 간 데이터 교환을 위한 자바 빈즈(Java Beans)이다.

데이터베이스 레코드의 데이터를 매핑하기 위한 데이터 객체를 말한다. DTO는 보통 로직을 가지고 있지 않고 data와 그 data에 접근을 위한 getter, setter만 가지고 있다. 정리하면 DTO는 Database에서 Data를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다.

반응형

'Programming > Java' 카테고리의 다른 글

[Java] 거듭 제곱 구하는 방법 Math.pow()  (0) 2022.10.31
[Java] StringTokenizer 클래스  (0) 2021.09.25
[Java] printf  (0) 2021.09.11
Java Beans란?  (0) 2021.08.22
반응형

갑자기 평소 잘 되던 소스트리를 통한 push조차 안되기 시작했다.....

코드 안되는 것도 힘들게 하는데 왜...

알아 보니깐 8월 13일부터 토큰 로그인으로 인증해야한다고 하더라.

 

그러니 제일 먼저 토큰을 생성해야한다.

 

1. 액세스 토큰 생성하기.

먼저 본인의 github 페이지로 간다.

오른쪽 상단 내 계정 누르고 Settings 클릭.

 

Developer settings 클릭.

 

Personal access tokens 클릭. -> Generate new token 클릭.

 

Note 간단히 적어주고, repo 체크 후

 

맨 아래에서 Generate token 클릭!

 

Personal Access Token 생성 완료!

이 페이지를 벗어나면 다시 확인 할 수 없으니, 복사해서 메일이든 어디든 꼭 적어두자!

 

이제 github 비밀번호 자리에 비밀번호 대신 Access Token으로 사용하면 된다.

 

 

2. 소스트리에 액세스 토큰 적용하기(소스트리 사용할 경우)

필자는 소스트리를 사용하기때문에 소스트리 계정에서 액세스 토큰을 적용하는 방법을 알아보자!

(본인은 안된다... 왜 적용이 안되는지 모르겠다.)

아래 3. 키체인접근에서 github 관련 비밀번호에 전부 액세스토큰을 넣어주니 해결!

소스트리에서 계정관리 창으로 들어가본다!

 

여기서 기존 계정이 있으면 더블클릭, 새로 등록이면 추가를 누른다.

 

Github / 베이직 / 사용자 이름 = 깃허브 닉네임 / 암호 = 방금 전에 만들은 Access Token / 프로토콜 SSH

위와 같이 설정 후 저장!

그리고 다시 push를 진행해보려했는데 처음과 같은 화면이 나왔다....(혹시 되시는 분들은 댓글로 알려주시면 감사하겠습니다.)

 

그래서 제가 찾은 다른 방법은 (저는 macOS라) 키체인에 등록되어 있는 github의 암호를 Access Token으로 바꿔주는 것이다.

방법은 다음과 같다.

 

3. 키체인접근에 github 정보 액세스 토큰으로 수정해주기

키체인 접근을 검색해서 들어가준다.

 

로그인 탭에서 github.com 들어가기

 

1. 암호 보기 체크 -> 2. 맥북 부팅시 암호 입력 -> 3. 액세스 토큰 입력.

 

터미널 실행. 푸쉬할 폴더로 이동.

푸쉬 진행하면 성공적으로 진행!

반응형
반응형

본 내용은 이지업 사이트의 스프링부트 SNS프로젝트 - 포토그램 만들기 강의를 들은 내용을 기반으로 작성하였습니다.

 

Spring Boot는 Servlet으로 만들어져 있습니다.

 

Servlet이란?

- 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바(Java)로 작성된 프로그램을 말한다.

- Java로 매핑할 수 있는 기술

 

예시로 

 

로그인 요청 -> Login.java

회원가입 요청 -> Join.java

게시물 쓰기 -> write.java

 

이렇게 요청의 갯수에 따라 Java파일(Servlet 파일)이 필요하다.

이는 매우 비효율적이다. 이것을 보완하기 위해 Controller를 사용한다고 생각하면 된다. Controller를 사용하면 아래와 같은 구조.

 

모든 요청을 FrontController.java에서 받고 있다.

여기에는 또 문제가 존재한다. 요청이 엄청나게 많아진다면 한 Controller에서 그 요청을 다 받는 것은 좋은 구조가 아니다.

그렇다면 어떻게 해야하는가?

 

Dispatcher를 통해 Domain 별로 분기해주고 Controller를 이용하여야 한다.

스프링 부트의 경우 Dispatcher가 이미 만들어져있고, 사용자는 Controller만 만들고  적절하게 사용하면 된다.

반응형

'Programming > Spring' 카테고리의 다른 글

DI(Dependency Injection) 이란?  (0) 2021.08.26
POJO란?  (0) 2021.08.26
YML/YAML 파일이란 무엇인가?  (0) 2021.08.11
SPRING과 SPRING BOOT의 차이점  (0) 2021.08.01
[spring boot] http 요청 file로 응답  (0) 2021.06.15
반응형

YAML을 시스템 간 데이터를 주고 받을 때, 사용하는 포맷 중 하나이다.

 

우리는 타 시스템 간에 데이터를 주고 받을 때, 데이터 포맷에 대한 약속이 필요하다. 시스템을 개발하거나 내부시스템끼리는 규칙을 만들어 지킬 수 있다. 하지만 문제는 타 시스템과 연동 할 때 발생한다.

내부에서 세운 규칙을 타 시스템과 데이터를 주고 받을 때마다 데이터 규칙에 대한 문서를 주고 받는다면 문서들도 많아지고 비효율적이게 된다. 그래서 XML, Json과 같은 데이터 포맷을 정의하여 사용하고 있고 그 포맷에는 규칙도 있다.

 

가장 오래 사용된 포맷은 XML이다.

xml 포맷 형식

XML은 태그형식을 통해 Key-Value를 구분하고, 태그안에 태그를 넣어서 부모와 자식관계의 구조를 나타낸다.

Object와 Array 부분은 표시를 해놨지만 Xml포맷상으로는 구분이 안되는 부분도 있다.

 

다음은 똑같은 내용의 JSON 포맷이다.

JSON 포맷 형식

XML포맷과 비교해 보았을 때, 훨씬 간소화된 느낌을 받을 수 있다.

Object 일 경우, {}로 감싸주고

Array일 경우, []로 감싸주는 형식이다.

Key값의 경우 XML 은 앞 뒤로 두번씩 들어가는데 JSON에서는 한번씩 들어가서 더 간결하다.

그런데도 {}, [], "" 같은 문자들이 불필요하게 많이 들어간 느낌이 있다.

 

다음은 YAML이다. 야믈(?)이라고 읽고, yml이라고 쓴다.

yml 포맷 형식

-(하이픈)을 통해서 Array임을 알 수 있다.

YAML이 딱 봐도 다른 포맷들보다 깔끔하다고 느낄 수 있다.

 

마지막으로 3가지 가독성 비교.

3가지 포맷 비교

따로 볼 땐 잘 몰랐는데 확실히 YAML이 깔끔해 보인다. YAML 포맷은 현재 많은 곳에서 사용되고 있다. 많은 사람들이 개발 시스템 설정 파일을 예전에는 config.properties를 사용했는데 현재는 config.yml로 많이 쓰는 추세이다. 참고로 쿠바네티스에서도 API를 전송할 땐 JSON 규격도 사용하지만 일반적으로는 YAML을 권장한다.

반응형
반응형

SPRING FRAMEWORK

스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.

장점

  • 경량 컨테이너
  • IoC(Invertion of Control : 제어 역행)
  • DI(Dependency Injection : 의존성 주입)
  • AOP(Aspect-Oriented Programming : 관점지향 프로그래밍)

SPRING BOOT

스프링 프레임워크는 기능이 많은만큼 환경설정이 복잡하다. 이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 스프링 부트다. 스프링 부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 돕는다. 스프링 부트 starter 디펜던시만 추가해주면 바로 API를 정의하고, 내장된 탐캣이나 제티로 웹 어플리케이션 서버를 실행할 수 있다. 심지어 스프링 홈페이지의 이니셜라이저를 사용하면 바로 실행 가능한 코드를 만들어준다. 실행환경이나 의존성 관리 등의 인프라 관련 등은 신경 쓸 필요 없이 바로 코딩을 시작하면 된다. 그리고 바로 그것이 스프링의 키 포인트이다.

Spring Boot가 Spring Framework와 다른점.

  1. Embed Tomcat을 사용하기 때문에, (Spring Boot 내부에 Tomcat이 포함되어 있다.) 따로 Tomcat을 설치하거나 매번 버전 관리를 해주어야 하는 수고를 덜 수 있다.
  2. starter을 통한 dependency 자동화:
  • Spring framework 에서는 각각의 dependency들의 호환되는 버전을 일일이 맞추어 주어야 했고, 때문에 하나의 버전을 올리고자 하면 다른 dependency에 까지 영향을 미쳐 version 관리에 어려움이 많았다. 하지만, 이제는 starter가 대부분의 dependency를 관리해주기 때문에 이러한 걱정을 많이 덜게 되었다.
  1. XML설정을 하지 않아도 된다.
  2. jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다.
  • Spring Actuaor를 이용한 애플리케이션의 모니터링과 관리를 제공한다.

Spring Boot Starter란?

starter란 특정 목적을 달성하기 위한 의존성 그룹이라고 생각하면 이해가 쉽다. starter는 마치 npm처럼 간편하게 dependency를 제공해주는데, 만약 우리가 JPA가 필요하다면 prom.xml(메이븐)이나 build.gradle(그레이들)에 'spring-boot-starter-data-jpa'만 추가해주면 spring boot가 그에 필요한 라이브러리들을 알아서 받아온다.

spring-boot-starter-*

starter의 명명 규칙은 위와 같다. JPA 예시에서 알 수 있듯이 *부분에 원하는 스사터명을 명시하면 된다. 명명 규칙을 알면 손쉽게 원하는 라이브러리를 import 할 수 있다.

 

 

 

출처 - https://velog.io/@courage331/Spring-%EA%B3%BC-Spring-Boot-%EC%B0%A8%EC%9D%B4

반응형
반응형

먼저 배포할 프로젝트를 올려둔 github에서 clone 받아오기 위해서 EC2 인스턴스에 git을 설치해줘야 한다.

 

터미널을 통해 EC2에 접속한다.

 

# git 설치
sudo yum install -y git

위 명령어를 실행하면 git이 자동으로 설치된다.

 

# git version 확인
git --version

 

이렇게 버전 정보가 뜬다.

 

# git clone으로 프로젝트를 저장할 디렉토리 생성
mkdir ~/app && mkdir ~/app/test

# test 폴더로 이동
cd ~/app/test

# 프로젝트 clone
git clone (github프로젝트주소)

git clone (github프로젝트주소)를 하면 우리가 만든 test 폴더에 프로젝트가 clone된다.

 

클론이 완료된 모습.

 

# 프로젝트 폴더로 이동.
cd 프로젝트명

# 폴더 안에 파일 확인
ls

현재 프로젝트 폴더 안에 파일명들을 나열해준 화면.(필자의 경우 미리 빌드하고 실행했어서 target폴더에서 꺼내온 jar파일이 존재함.

 

프로젝트를 빌드하기 위해서 먼저 EC2 환경에 Maven을 설치해줘야 한다.

 

Maven 설치하기

먼저 헷갈릴 수 있으니 최상위 폴더로 이동한다.

최상위 폴더로 이동하는 명령어는 아래와 같다.

# 최상위 경로로 이동
cd

여기서 maven이라는 폴더를 만들고 그 경로로 이동한다.

 

# maven 폴더 생성
mkdir ./maven

# maven 폴더로 이동
cd maven

그리고 maven 파일을 받는다. 아래 코드를 실행해주자.

 

# wget maven 다운링크
wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

코드를 실행한 후에 ls로 파일을 확인해보면 gz 파일이 잘 받아진 것을 확인할 수 있다. gz파일은 윈도우의 zip파일이라고 생각하면 된다.

 

# gz파일 압축 풀기
tar xvfs apache-maven-3.6.3-bin.tar.gz

위 명령어를 실행하면 아래와 같이 파일 두 개가 maven폴더에 존재하게 된다.

 

이제 환경변수를 설정해주자.

먼저 계정의 home으로 돌아온 후에 bash_profile을 연다.

 

# home으로 이동
cd ~

# bash_profile open
vi bash_profile

그리고 뜨는 창에 다음과 같이 입력해준다.

 

MAVEN_HOME=/home/ec2-user/maven/apache-maven-3.6.3
PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_HOME

vi 편집기 기본 사용법은 다음에 정리하겠다. 우선 지금 쓰는 간단한 사용법은

vi bash_profile로 들어간 상태에서 i를 누르면 글을 작성할 수 있다.

거기에 위 코드를 작성해주고, esc를 누르면 다시 작성모드가 종료된다.

그 상태에서 :wq를 작성하면 변경된 내용을 저장하고 종료한다.

 

# 변경한 .bash_profile 파일을 반영
source. bash_profile

# maven 버전 확인
mvn -version

이제 위 코드를 실행해서 반영해주고 버전확인으로 maven 설치가 잘 되었는지 확인 해주자.

 

이렇게 설치가 잘 된 것을 볼 수 있다.

이제 다시 ls와 cd 명령어를 통해서 프로젝트 폴더로 이동해준다.

 

### maven ###
# mvnw 파일 접근 권한 변경
chmod +x mvnw

# maven 컴파일 + 빌드(pom.xml이 존재하는 폴더 안에서 실행)
mvn package

### gradle의 경우 ###
# gradle의 경우 파일 접근 권한 변경
chmod +x gradlelw

# 테스트 진행
./gradlew test

# 빌드
./gradlew build

이렇게 빌드를 하고 익숙하게 봐온 스프링 부트 화면도 나온다.

완료 후에 다시 ls로 파일명들을 보면 target 이라는 폴더가 생성된 것을 볼 수 있다.

 

# target 폴더로 이동
cd target

target 폴더 안에 *.jar 또는 *.war 파일이 만들어졌는지 확인한다.

 

정상적으로 빌드 됐다면 이렇게 .jar 파일이 생긴다.

이 파일을 실행해야 하는데 파일을 target폴더 안에서 실행시키지 말고 아래 명령어를 통해 jar파일을 한 경로 위로 가지고 온다.

 

# jar 파일 경로 옮기기
mv (jar파일명) ../

잘 옮겨진 것을 확인할 수 있다.

이렇게 해주는 이유는 target에서 실행할경우 경로 문제가 발생하여 제대로 열리지 않는 경우가 있기 때문이다.

이제 jar 파일을 실행해주자.

 

# jar 파일 실행
java -jar (jar파일명)

 

에러가 없다면 이렇게 잘 실행된 것을 확인 할 수 있을 것이다.

이제 우리가 만든 프로젝트를 웹으로 열어보자.

주소는 EC2 인스턴스에 걸어둔 탄력적 IP 주소와 프로젝트에서 설정한 포트번호이다. 필자의 경우 8080. 주소창에 아래 주소를 적는다.

 

(EC2에 적용된 탄력적 IP주소):8080

 

드디어 배포가 완료되었다~~~

 

여기서 ec2를 접속한 터미널을 그냥 끄게 되면 서버가 닫힌다.

그렇다면 ssh 연결을 끊어도 프로젝트를 배포상태로 두고 싶다면 어떻게 해야할까?

위의 jar파일 실행상태에서는 어떤 버튼을 눌러도 반응하지 않는 상태이다.

여기서

 

ctrl + z

 

를 누르면 터미널을 다시 사용할 수 있는 화면이 된다.

 

# bg 입력, 만약 bg로 되지 않는 다면 bg 1 입력
# bg는 백그라운드에서 작업을 실행하는 것이다.
bg

# disown 은 프로세스를 shell의 job control 에서 벗어나게 해준다.
disown

exit

위 명령어를 실행 한 후에는 EC2 접속을 끊고 터미널을 종료해도 언제 어디서든 내가 만든 프로젝트에 접속이 가능해진다.

이렇게 AWS를 이용한 24시간 무중단 배포를 완료하였다.

 

만약 다시 EC2에 접속해서 프로젝트 배포를 멈추고 싶다면

# 실행중인 포트가 사용중인 Process 확인
netstat -lnp | grep (포트번호)

# 실행 종료 시키기
kill -9 (확인한 Process번호)

이렇게 종료할 수 있다.

 

이상으로 AWS로 프로젝트 배포 포스팅을 마치겠다.👏

반응형
반응형

https://aws.amazon.com/ko/

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정

aws.amazon.com

AWS 홈페이지에 접속해서 로그인 한다.

 

서비스에서 RDS 클릭.

 

주황색 데이터베이스 생성 버튼 클릭

 

표준 생성 선택

MariaDB 선택

버전 선택(버전은 기억해둬야 한다. 추후에 파라미터 그룹 설정 시 사용)

 

템플릿 - 프리티어 선택!!!(다른 것 선택 시 비용이 청구 될 수 있음)

DB 인스턴스 식별자 - 본인이 알아볼 수 있는 DB 이름

⭐️ 마스터 사용자 이름과 마스터 암호는 반드시 기억해놔야 한다.

 

프리티어를 선택하면 DB인스턴스 크기는 자동 선택되어 있다.

스토리지 - 할당된 스토리지 20GB가 맞는지 확인 / 나머지는 그대로

 

연결 → 퍼플릭 액세스 가능 → 예

VPC 보안 그룹 → 기존 항목 선택

 

추가 구성 → 데이터베이스 포트 3306

데이터베이스 생성 클릭!!!!

 

RDS가 생성되었다.(아직 생성중, 조금 걸린다. / 위에 DB는 기존에 만든 것)

이제 운영환경을 설정해줘야한다.

왼쪽 메뉴바에서 파라미터 그룹 클릭

 

파라미터 그룹 생성 클릭

 

파라미터 그룹 패밀리 → RDS 생성 시 선택했던 DB와 버전 확인 후 선택

이름, 설명 알아서 작성하면 된다.

다 작성 후에 생성 클릭.

 

내가 작성한 파라미터의 상세 페이지에 들어간 화면이다.

여기서 오른쪽에 수정 클릭

 

들어와서 입력해줘야 할 파라미터들을 검색해서 내용을 넣어준다.

설정해줘야 하는 파라미터 값들은 다음과 같다.

 

time_zone - Asia/Seoul

character_set_client - utf8mb4

character_set_connection - utf8mb4

character_set_database - utf8mb4

character_set_filesystem - utf8mb4

character_set_results - utf8mb4

character_set_server - utf8mb4

collation_connection - utf8mb4_general_ci

collation_server - utf8mb4_general_ci

max_connections - 150

 

위와 같이 다 설정 해준 후 변경 사항 저장을 눌러서 저장한다.

다음은 변경한 파라미터를 DB에 적용할 차례이다.

왼쪽 메뉴바에서 데이터베이스 클릭.

 

파라미터 설정할 데이터 베이스를 선택한 후 오른쪽 위 수정 버튼 클릭

 

추가 구성 → 데이터베이스 옵션 → DB 파라미터 그룹 → 내가 생성한 파라미터 그룹 선택.

 

맨 아래로 내려와서 오른쪽 아래 계속 버튼 클릭.

 

이런 화면이 나오는데 여기서

새 값에 내가 선택한 파라미터 그룹이 맞는지 확인하고

수정예약 → 즉시 적용 선택

DB 인스턴스 수정 클릭.

여기까지 RDS를 생성해서 변경한 파라미터 그룹을 적용하였다.

그럼 이제 생성한 EC2와 RDS를 연결해보자.

EC2 페이지의 인스턴스 상세 페이지로 간다.

 

보안 탭에 있는 보안 그룹의 상세 페이지로 이동.(왼쪽 아래 보안 그룹의 파란 글씨 클릭)

 

보안 그룹 ID를 복사

다시 RDS 페이지로 돌아간다.

 

생성한 RDS의 상세페이지로 들어가서 조금 내려보면

보안 그룹 규칙 탭이 있다. 여기서 보안그룹 하나 클릭해서 보안그룹 상세페이지로 이동.

 

아래에 인바운드 규칙 탭 클릭.

 

오른 쪽에 Edit inbound rules 클릭.

 

 

규칙 추가를 누르고

MYSQL/Aurora 선택 후, ec2 인스턴스의 보안그룹 id를 넣은 규칙 한개,

내 ip를 입력한 규칙 한개를 생성한다.(내 ip를 선택하면 알아서 들어감)

규칙 저장 클릭!

이제 EC2 인스턴스와 RDS가 연결되었다.

이제 생성한 원격 데이터베이스에 접속해보자.

다시 RDS 상세페이지에 들어간다.

 

연결 & 보안 탭의 앤드포인트를 복사한다.

필자는 IntelliJ를 이용하여 database 플러그인으로 원격 데이터베이스를 사용하려한다.

(Workbench 등 다른 것 사용 가능)

 

IntelliJ에서 오른쪽 구석에 Database를 클릭하면 다음과 같은 화면이 나온다.

 

+ 버튼 클릭 → Data Source → MariaDB 선택

 

여기서 앤드포인트와 RDS생성 시 작성했던 마스터 사용자 이름과 비밀번호가 사용된다.

잘 작성한 후에 아래쪽에 Test Connection을 해보자.

 

이렇게 잘 나온다면 접속 성공이다! OK를 눌러 DB를 추가한다.

 

추가한 DB에 Schema를 하나 생성한다.

 

쿼리문을 작성하여 방금 생성한 Schema를 사용할 스키마로 지정해주자.

 

## use 스키마이름;
use Test;

 

다음은 DB 설정들을 확인할 것이다

## character set, collation 설정 확인
show variables like 'c%';

위 쿼리문을 실행한 후 살펴보면

 

이렇게 결과를 볼 수 있는데 우리가 확인하고 수정할 부분은

character_set_database

collation_database

이 두 가지이다.

 

만약, 두 가지 외에도 latin1으로 시작하는 부분이 있다면 RDS 페이지로 돌아가서 데이터베이스를 재부팅한 후 다시 쿼리문을 실행하자.

RDS 선택 → 작업 → 재부팅

그러고 쿼리문을 다시 실행하면, 바꾸려고 했던것 외에 기존의 latin1으로 작성되어있던 부분이 변경된 것을 확인할 수 있을 것이다.

 

이를 수정하는 쿼리문은 아래와 같다.

ALTER DATABASE 데이터베이스명(Schema명)
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';

이를 실행한 후 다시 확인해 보면 원하는대로 변경된 것을 확인할 수 있다.

 

## 타임존 확인
SELECT @@time_zone, now();

 

 

프로젝트 DB 설정해주기!!

src → resources → applicaion.properties(또는 yml 등 본인이 작성한 파일)

 

# MariaDB 연결
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://[ec2 앤드포인트]:3306/[사용할 db schema 이름]
spring.datasource.username=[db 마스터 이름]
spring.datasource.password=[db 마스터 비밀번호]

위 코드대로 내용을 적용해준다.(양식 달라도 내용만 같게 적용해주면 됨.)

 

EC2에서 RDS 접속하기

EC2에 접속한 터미널에서 먼저 MySQL을 설치해야한다.

(MariaDB는 MySQL 기반)

sudo yum install -y mysql

 

DB 접속

mysql -u 마스터사용자계정 -p -h 앤드포인트

 

EC2를 통해 생성한 RDS에 잘 접속됨을 확인할 수 있다. 우리가 생성한 Test DB도 확인.

반응형

+ Recent posts