Abstract
Ajax
가 등장하고 Frontend
라는 개념이 등장한지 어언 20여년. 명확한 경계가 있었던 한 시대를 지나 이제는 새로운 기술의 등장과 함께 다시 Frontend
와 Backend
의 경계가 모호해지고 있다.
react
, vue
처럼 Virtual DOM
개념을 구현한 프레임워크를 필두로 svelte
, solid.js
등 부터 DOM
을 컴파일 레벨로 구현하는 프레임워크가 등장하기 시작했다.
또한, 자체 server
를 제공하는 fullstack
프레임워크인 Nest.js
, Nuxt.js
, svelte-kit
등이 등장하면서 Frontend
라는 개념이 점차적으로 서버사이드까지 확장하였다.
그리고 현재는 다양한 Server(Backend) SaaS
, DB SaaS
들이 등장하였다. 오래된 Firebase
부터 시작해서 Supabase
, GrafBase
, PlanetScale
등 서버사이드와 DB 및 인프라에 익숙치 않은 유저들을 위한 서비스들이 우후죽순 등장한다는 것은 이제 Frontend
Backend
라는 경계가 무너지고 있는 것을 반증하고 있다.
하지만 이러한 다양한 SaaS
, PaaS
등을 이용하다보면 다양한 접근성을 가능하게 하기위해 기존의 Server
와 DB
의 개념에 대해 접근하고 이해하는 것이 필요해진다.
이번 포스팅에서는 대표적인 Relation DB
인 MySQL
을 AWS
에 Docker
로 말아올리는 간단한 예제를 소개할 예정이다. (적은 비용으로)
참고할만한 링크: https://github.com/ManzDev/frontend-evolution
Setting up AWS EC2 Service
원하는 지역으로 region
을 변경
Launch Instance
클릭
원하는 OS 선택. (여기서는 Amazon Linux
로 진행)
Free tier eligible
한 t2.micro
로 진행
Key Pair 생성, 혹은 있으면 그대로 선택해서 사용
나머지는 그대로 진행
instance
대쉬보드에 들어가서 방금 생성한 EC2 클릭
connect
선택
Terminal
에서 Pair Key [filename].pem
이 저장된 폴더에 접근
3번 안내문 대로 권한 획득 후 4번 Example
명령어 복사 및 실행
아래 메세지와 같은 리턴을 받았다면 Security Group
수정이 필요
ssh: connect to host [xxxx].ap-northeast-2.compute.amazonaws.com port 22: Operation timed out
Security Groups
> 변경할 정책 이름 > Inbound rules
> Edit inbound rules
클릭
Inbound
그룹에 ssh
관련 포트 설정 (TCP 22 Port)
MySQL
관련 포트 설정 (TCP 3306 Port)
다시 돌아가서 ssh 접속 실행
Package Update 진행
$ sudo yum update
$ sudo yum -y upgrade
Setting up Docker on EC2
Docker 설치, 확인 및 시작
# install docker
$ sudo yum -y install docker
# docker version confirm
$ docker -v
Docker version 20.10.17, build 100c701
# start docker service
$ sudo service docker start
Docker 볼륨 생성
# create docker-volume
$ sudo docker volume create mysql_v
mysql_v
# result
$ sudo docker volume ls
DRIVER VOLUME NAME
local mysql_v
Docker Hub
에서 MySQL
이미지 불러오기
$ sudo docker pull mysql:latest
Docker Container 마운팅
# mounting & run docker container
$ sudo docker run --name <container_name> -e MYSQL_ROOT_PASSWORD=<password> -d -v mysql_v:/var/lib/mysql -p 3306:3306 mysql:latest
# monitor running docker images
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bec12e4eb164 mysql:latest "docker-entrypoint.s…" 9 seconds ago Up 8 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp <container_name>
Connecting Database with DB Tool
MySQL
도구 중 가장 널리 쓰이는 도구는 MySQL Workbench
일 것이다.
여기서는 오픈 소스인 DBeaver
를 이용하는 가이드를 소개하겠다.
DBeaver
를 다운로드 및 실행
해당 링크: https://dbeaver.io/
New Database Connection
클릭 > MySQL
클릭
Server Host
, Root Password
입력
Test Connection
실행
이런 메시지를 얻으면 연결에 성공
만약 Public Key
관련 오류가 뜬다면 Driver properties
탭에 들어가 다음과 같이 설정
연결에 성공했으면 간단한 DB 생성과 테이블 생성을 진행해보자
성공한 연결은 왼쪽 Database Navigator
에 리스트로 표시 된다.
선택한 뒤 작업표시줄에 있는 SQL
버튼을 클릭하면 Query를 작성할 수 있는 환경을 제공한다.
다음과 같이 데이터 베이스 생성해보자
CREATE DATABASE HELLO_WORLD;
테이블 생성
CREATE TABLE dummy_data (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
hello VARCHAR(100) DEFAULT NULL
);
데이터 삽입
INSERT INTO dummy_data(hello)
VALUES
('안녕하세요'),
('Hola'),
('こんにちは'),
('hallo'),
('ciao');
그럼 다음과 같이 DBeaver 에서 데이터 베이스, 테이블, 데이터가 생성된 결과를 확인할 수 있다.
➕ DB Backup
DB 전체 백업은 다음과 같이 DBeaver 메뉴에서 진행 가능
Conclusion
Docker compose
를 구성하거나 그 외에 다양한 방법으로도 접근 가능하지만 가장 간단한 방식으로 AWS EC2
에 Docker
를 이용해서 MySQL
DB 서버를 구성해보았다.
서문에 언급했듯이 더이상 Frontend
Backend
구분은 의미가 없어지는 시대가 이미 성큼 다가왔다.
앞으로는 서비스 성격이나 규모에 따른 포지션 구분이 좀더 대중화가 될 것이다.
기존의 대규모 처리 시스템과 같은 서비스들은 변화가 느리기에 View
, Server
의 구분 방법을 따를 것이나 대다수를 차지하는 중소규모나 빠른 프로토 타이핑을 위해서는 CI/CD SaaS
, Server SaaS
, DB SaaS
와 같은 서비스들을 사용해서 빠르게 서비스를 개발하는 것이 경쟁력이 될것이다.
더 나아가 중소규모에서 대규모로 넘어갈 수 있는 기반 지식은 Engineer로서든 Manager로서든 서비스 개발하고 운영하는 관점에서 꼭 필요한 기본 소양이 될것이다.
Top comments (0)