
프로젝트 리뷰 외에 개발 일지를 기록해보려고 합니다.
러프하게 수행했던 작업을 기록해보겠습니다.
부트캠프 교육이 끝났습니다. 사실 부트캠프 교육 내용으로는 개발 직무로 취업을 하기위해서는 부족하다는 생각이 많이 들었습니다. 따라서 추가적으로 사이드 프로젝트와 포트폴리오를 다듬기로 했습니다. 참고하기 위해 유튜브나 블로그에서 여러 포트폴리오, 사이드 프로젝트를 찾아보았습니다.
포트폴리오를 찾아보니 많은 분들이 배포를 하신 것을 확인했습니다. 나도 배포를 해보는 것이 도움이 될까 자료를 조사해보았고 배포를 하기로 결정했습니다. 실제로 사용자가 애플리케이션을 사용하면서 생긴 트래픽을 관리해보는 것이 백엔드를 다뤄보는 측면에서 좋다고 생각했기 때문입니다. 또한 비전공자로서 필요한 부분만 발췌해서 효율적으로 CS공부하기에도 좋을 것으로 기대하고 있습니다.
배포는 '이동욱' 님이 저술하신 『스프링 부트와 AWS로 혼자 구현하는 웹 서비스』 를 토대로 여러 자료를 참고했습니다.
애플리케이션을 배포하기 위해서는 24시간 작동하는 서버가 필요합니다. 해당 작업을 수행하기 위해서 사용하는 방법은 다음과 같습니다.
1) 집에서 PC로 직접 서버 구동
2) 호스팅 서비스 : cafe 24, ...
3) 클라우드 서비스 : AWS ...
최근 현업에서는 많은 회사에서 클라우드 서비스를 사용하고 있는 추세라고 합니다.
클라우드 서비스는 쉽게 말하면 인터넷(클라우드)를 통해 서버, 스토리지(파일 저장소), 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것입니다. 단순히 물리 장비를 대여하는 것이 아니라 ... 실제로 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본으로 지원하고 있습니다.
이동욱 , 스프링 부트와 AWS로 혼자 구현하는 웹 서비스』(2019), p.225 - 226
클라우드 서비스의 종류는 다음과 같습니다.
(1) Infrastructure as a Service(IaaS)
- 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스
- 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스
- AWS의 EC2, S3 등
(2) Platform as a Service(PaaS)- IaaS를 한 번 더 추상화한 서비스
- 많은 기능이 자동화
- AWS의 Beanstalk, Heroku 등
(3) Software as a Service(Saas)- 소프트웨어 서비스
- 구글 드라이브, 드랍박스 등
이동욱 , 스프링 부트와 AWS로 혼자 구현하는 웹 서비스』(2019), p.226
인스턴스 생성은 위의 책과 아래의 블로그를 참조했습니다.
(참고) https://velog.io/@jonghyun3668/SpringBoot-프로젝트-EC2-배포하기
작성한 내용 외의 사항은 기본값을 유지했습니다.
EC2 무료 버전(프리티어)는 계정 활성화 후 12개월동안 유지됩니다.
1. 인스턴스 시작
2. 이름 , AMI 설정
3. 인스턴스 유형, 키페어 생성(SSH키 발급)
4. 스토리지 구성(30으로 변경) 및 인스턴스 시작
1. 좌측 툴바 - 보안 그룹 선택
2. 보안 그룹 생성
3. 보안 그룹 이름 , 설명
4. 인바운드 규칙 추가
- HTTPS / 사용자 지정 TCP 소스는 ipv4 | ipv6 둘 다 선택
5. 생성
6. 메인 세션 - 인스턴스 선택
7. 체크 박스 선택 - 작업 - 보안 - 보안 그룹 변경
8. 보안 그룹 선택(위에서 생성한 보안 그룹 선택) - 저장
1. 좌측 툴바 - 탄력적IP
2. 탄력적 IP 주소 할당
3. 할당
4. 체크 박스 선택 - 작업 - 탄력적 IP 주소 연결
5. 인스턴스 선택 - 연결
AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버.
Amazon Machine Image . EC2 인스턴스를 시작하는 데 필요한 정보.
참고 자료가 많은 Amazon Linux 2(HVM) AMI 사용하기로 결정
(찾아볼점) SSH 통신이란?
(1)방화벽
오픈 할경우 키가 노출되는 순간 보안이 뚫리게 된다.
지정된 IP로 선택하고 다른 장소 옮길경우 IP 주소를 바꿔준다.
현재 프로젝트의 기본 포트인 8080을 추가해준다.
인스턴스는 해당 pem키와 매칭하는 공개키를 가지고 있어 키가 있어야만 접근할 수 있다.
(1)사용 이유
인스턴스 하나의 서버이기 때문에 IP 필요.
고정 IP 설정하지 않으면 서버 재시작 할때마다 IP 주소가 바뀐다.
(2)EIP
AWS 의 고정 IP를 Elastic IP(탄력적 IP)라고 한다.
윈도우에서는 별도의 클라이언트를 통해 ssh에 접속합니다.
다음 사이트(https://www.putty.org/에서 아래의 파일을 받습니다.
윈도우에서는 ssh 접속이 바로 되지 않으므로 pem → ppk로 변경해야함.
puttygen.exe 실행합니다.
1. Conversions - Import Key - EC2 생성시 받은 pem 키 등록
2. Save private key
putty.exe를 실행합니다.
1. Host Name 등록
ec2-user@탄력적 IP 주소를 입력해줍니다.
2. 왼쪽 사이드 바의 Connection - SSH - Auth - credentials - Browse(상단)-ppk키 등록
3. 왼쪽 사이드 바의 Session - Saved sessions(이름 기록) - Save
4. 등록 한 이름선택 - Load - Open
SSH 접속이 성공한다면 다음과 같은 화면이 뜹니다.(독수리 이모티콘이 뜬다면 실패한 것)
(참고) SSH 접속시 보안 그룹에서 IP 주소에 따라 안될 수도 있습니다.
문제가 생긴다면 보안 그룹에서 SSH를 다시 현재 IP를 선택하셔야 합니다.
(1) java8 설치
저는 java8로 프로젝트를 진행중이기 때문에 java8을 다운 받았습니다.
설치
- sudo yum install -y java-1.8.0-openjdk-devel.x86_64
버전 선택
- sudo /usr/sbin/alternatives —config java
버전 확인
- java -version
(2)타임존 변경
아래의 코드를 입력하여 EC2 서버 로컬 타임을 한국 시간에 맞추어주어야 합니다.
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date