티스토리 뷰
해당 글은 서버에 관한 지식을 전달하는 포스팅 글이 아니다.
내가 서버 개발을 하며 느낀 점들과, 약간의 지식이 곁들여져 있는 글이다.
🚨 들어가며
포트폴리오를 만들기 위해 서버로 AWS를 사용하게 되었고, AWS를 사용하게 되면서 새롭게 알게 된 지식들이 있다.
지난 1년을 되돌아보면 회사에 취직해서 백엔드(Java)와 프런트(JS)를 다뤘는데 서버에 대해 늘 궁금했다.
서버에 대해 한 번도 공부한 적이 없던 나는 이번 백엔드와 프론트엔드의 서버를 구축하고, 서버 통신을 실제로 구현하면서
서버의 중요성에 대해 알게 되었고, 중간중간 떨어져 있는 지식들을 채워야겠다고 느꼈다.
다음 포스팅 글에서는 다음 내용들을 다룰 것이다.
1. IP란
2. Port란
3. Private, Public 이란?/ 차이점은?
⭐️ 정말 중요하게 느낀 것.
# 모든 문제의 원인은 로컬에서 생각하기
나는 백엔드(스프링)와 프론트(리액트) 파일을 분리해서 서버를 띄우고자 했다.
먼저 나의 로컬 환경에서 테스트를 진행했다.
<리액트 localhost:3000 / 스프링 localhost:8080>
리액트에서는 프록시 미들웨어를 통해 백엔드와 연결을 했고,
리액트를 구동하면 백엔드의 데이터와 통신하는 것을 확인했다.
이번에 EC2로 서버를 구축하게 되면서 EC2의 가상 서버에 스프링/리액트를 띄워주면
로컬 환경과 똑같이 되겠구나!라고 생각만 했다.
하지만 실제로 EC2에서 동작이 안 됐다.
동작이 안된 이유에 대해서 추후에 알게 되었는데
localhost:8080의 8080은 스프링 부트의 port이고,
localhost:3000의 3000은 리액트의 port이다.
리액트에서 백엔드로 바라보기 위해선 로컬 환경변수에서 선언한 localhost:8080 이외에
개발 환경변수도 만들어주고 AWS에서 제공하는 DNS: 8080을 선언해줘야 했다.
# 오류에 대한 상상력
나는 돈을 아끼기 위해 하나의 EC2를 구성했고, Git의 백엔드 레포지토리 / 리액트 레포지토리를
깃허브 액션으로 AWS S3 - Code Deploy - EC2 이런 식으로 하나의 EC2에 던져주려고 했다.
백엔드의 깃허브 액션은 쉽게 구성했다.
하지만 프런트의 깃허브 액션은 예제를 찾아보며 구성해도 계속해서 오류가 났다.
(여기서 오류 해결방법을 다루진 않는다.)
기존의 나는 에러가 나면 에러 문을 읽어보고 검색을 했고 검색 결과를 통해 비슷한 글을 읽고 해결을 했다.
하지만! 검색 시도 시 스택오버플로우에 일치하는 글이나, 티스토리 등의 포스팅 글이 없다면, 나는 해결하는 데 있어 상당한 애를 먹었다.
이번에 깃허브 액션 에러를 해결하면서. "상상력"의 중요성을 알게 되었다.(기초지식은 말할 것도 없고..)
에러가 나면은 #0. 모든 문제의 원인은 로컬에서 생각하기를 기반으로 생각하고, 하나하나 상상력의 문을 열어 에러를 해결해 가자.
🥳 CI/CD와 서버 구축 성공
깃허브 액션으로 백엔드와 프런트엔드 적용한 모습
S3에 저장된 뒤 codedeploy를 통해서 EC2로 연결 성공한 모습
🥳 추후 작업할 것
1. 3월 이후 prod서버에도 구축
- EC2 하나 더 생성
- EC2로 깃허브 액션 걸기
- S3와 codedeploy는 release에서 세팅해 둔 거 사용하기
- codedeploy에서 배포 구성 CodeDeployDefault.OneAtATime -> CodeDeployDefault.AllAtATime 체크하기\
2. DB 생성
3. Entity 생성
4. JPA 작업
등등등...
😭 배운 것
1. 태그 키와 값을 통해서 EC2 인스턴스를 태깅할 수 있다.
이를 통해서 AMI에서 설정한 상태를 적용할 수 있다.
codedeploy나 S3에서 인스턴스를 찾을 수 없다면 AMI 연결 유무를 확인할 것
2. 깃허브 액션을 적용할 때 node버전을 왜 적용하는지 모르고 생략했었는데
깃허브 자체에서 push가 되면 깃허브 액션에서 돌아갈 node버전을 선택하는 것이었다.
나는 스프링 부트로 서버를 구성하는데 왜 node버전을 깔지? 하면서 생략했었는데 오류 원인 중 하나였다.
3. AWS생태계 연결관계
이번 사이드 프로젝트로 서버를 구축하면서 AWS에 대해 알게 되었다.
정확하게 모든 서비스를 알진 못하지만
EC2 인스턴스, CodeDeploy, AMI, S3, 퍼블릭 IP, 도메인, 호스팅 포트, SSL 인증과 HTTP/HTTPS의 연관관계 public과 private서버의 차이 등을 알게 되었다. 서버를 구축하면서 정말 배울 것도 많고 난 모르는 게 너무 많구나라고 다시 한번 느끼는 시간이었다.
서버구축을 하면서 블로그 내 서버와 네트워크 카테고리를 만들었는데 이 내용도 추후 작성해 보아야겠다.
돈 문제로 서버를 완벽하게 구현하진 못했지만, 보람찬 시간이었다.
'✍🏻 > 일지록' 카테고리의 다른 글
[6. 토이프로젝트 개발일지] 중간점검 (0) | 2023.03.04 |
---|---|
[5. 토이프로젝트 개발일지] ec2 서버 다운되는 현상 발생 (0) | 2023.01.23 |
[3. 토이프로젝트 개발일지] 서버 구축 왜이리 어렵냐... (0) | 2022.12.08 |
[2. 토이프로젝트 개발일지] 웹디 합류 그리고 기획서는 hell (0) | 2022.11.13 |
[1. 토이프로젝트 개발일지] 시작! (0) | 2022.11.07 |
- Total
- Today
- Yesterday