▼ What ?
이번 주에 GDSC - Web 커리큘럼 마지막 주차 시간을 가졌다. 웹 개발의 마무리가 무엇일지 생각해봤을 때 떠오르는 것은 바로 내가 개발한 웹 서비스를 다른 사람들도 이용할 수 있도록 AWS를 이용해 인터넷에 서버를 배포하는 작업일 것이다. 따라서, 서버 배포를 해보는 과정을 끝으로 GDSC - Web 커리큘럼 정리를 마무리해보려고 한다.
▼ 서버 배포
AWS 라이트세일
- 라이트세일 메인 화면에서 "인스턴스 생성" 을 클릭한다.
- <Linux/Unix>를 선택하고 블루프린트는 <OS 전용>을 선택하고, <Ubuntu ~>를 선택하면 된다.
고정 IP 생성 / 방화벽 해제
- AWS 서버에 접속하려면 고정 IP와 방화벽 해제가 필요하다.
- 고정 IP 생성
➜ AWS 라이트세일 메인 화면에서 "네트워킹" 탭으로 이동해 아래처럼 생성해주면 된다.
- 방화벽 해제
➜ 8080 포트를 방화벽 해제함으로써 외부에서 고정 IP의 8080 포트로 접속이 가능해진다.
서버 접속 프로그램 - SSH / SFTP
- SSH
➜ 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템(서버)의 명령을 수행하기 위한 프로토콜. (기본포트: 22번) - SFTP
➜ SSH의 파일 전송을 담당하는 역할, 서버에 파일을 업로드하거나 다운로드 할 수 있는 프로토콜. (기본포트: 22번) - SSH 또는 SFTP 프로그램으로 서버에 접속하기 위해선 AWS의 계정 '프라이빗 키' 가 필요하다 !
- SSH 터미널 무료 프로그램인 MobaXterm을 사용해보자.
➜ mobaxterm.mobatek.net/download.html
➜ 설치했으면 아래의 과정을 수행하면 된다.
( Mac OS는 별도의 터미널 프로그램 없이 기본적으로 지원하는 터미널 프로그램을 사용하면 된다. )
- SFTP 무료 클라이언트 프로그램인 파일질라(FileZilla)를 사용해보자.
➜ https://filezilla-project.org/
➜ 좌측의 "로컬 사이트"는 내 컴퓨터를 의미하고 우측의 "리모트 사이트"는 서버를 의미 !
( Drag&drop이나 파일을 우측 마우스 버튼으로 클릭하여 "업로드" 또는 "다운로드" 가능. )
Webboard 서버 배포
- 서버 환경설정
➜ 터미널(MobaXterm)을 사용하여 서버에 접속하면 터미널 창이 나타난다.
ubuntu@ip-172-26-1-61:~$ sudo hostnamectl set-hostname jumpto
➜ 호스트명을 'jumpto' 로 변경.
ubuntu@ip-172-26-1-61:~$ sudo reboot
➜ 호스트명 변경 후엔 서버를 리부트해줘야 한다.
ubuntu@jumpto:~$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
➜ 서버 시간을 한국 시간을 설정해준다.
ubuntu@jumpto:~$ sudo apt update
➜ 우분투 패키지를 최신으로 업그레이드.
ubuntu@jumpto:~$ sudo apt install openjdk-17-jdk
➜ 서버에 자바 설치 !
ubuntu@jumpto:~$ mkdir webboard
➜ 홈 디렉터리(/home/ubuntu) 하위에 webboard 디렉터리 생성 !
- 인텔리제이(Intellij)에선 아래처럼 build를 해주고 생긴 'web-board-0.0.1-SNAPSHOT.jar' 파일을 파일질라(FileZilla)를 통해 서버에 전송해주면 된다.
- 인텔리제이에서 jar 파일을 그대로 드래그 해서 /ubuntu/web-board 하위 디렉터리에 드롭해주면 된다.
서버에서 WEBBOARD 배포 파일 실행
- 아래처럼 실행하게 되면 로컬 컴퓨터에서 생성됐던 데이터는 더 이상 보이지 않는다.
➜ 서버에서도 H2 데이터베이스의 데이터 파일인 local.mv.db 파일이 새로 만들어지기 때문 !
▼ 마무리
이렇게 벌써 게시판 사이트를 만들고 AWS를 이용해서 서버 배포까지 끝냈다는게 시간이 참 빠른 것 같다. 학기 중에 학교 공부와 프로젝트, 그리고 스터디까지 진행하면서 커리큘럼 시간을 통해 처음으로 웹사이트를 혼자서 만들어봤다는 것에 의의를 두고 싶고 뿌듯하기도 하다 ! 비록 있는 그대로 따라하며 웹사이트를 만들어봤지만 따라해보는 과정에서 이 부분에선 왜 이걸 썼으며, 어떤 경우엔 어떤 방식이 더 좋은지를 더 알아보는 과정 속에서 배운 것이 생각보다 엄청 많은 것 같다.
웹 개발의 구조도 이해할 수 있었고, 스프링 컨테이너 동작 원리, 스프링 시큐리티, 싱글톤 패턴이나 프록시 패턴과 같은 여러 소프트웨어 디자인 패턴, 프론트엔드와 백엔드 사이의 관계, 그리고 복습하면서 더 찾아보게 된 개념들(객체지향 5원칙, bean, eager/lazy, etc.)
이번 GDSC - Web 커리큘럼을 통해 배운 개념들과 원리들을 잘 기억해서 나중에 진행하게 될 프로젝트들에 직접 활용해보면서 내 것으로 만들고자 코드를 작성하는 시간보다 정리하고 복습하는 시간이 훨씬 많이 들었던 것 같은데(생각보다 부담됐음...), 내가 정리한 자료들이 나중에 많은 도움이 되길 바라며 Web 커리큘럼은 이를 끝으로 마무리해보려고 한다 !