연재작 (45) 썸네일형 리스트형 AWS S3를 통한 React SPA의 CI/CD Pipeline 정적 리소스를 반환하는 웹서버를 구축하기 위해 S3를 사용해보기로 했다.동시에, github repository의 내 branch로부터 push 할 때 한번에 업데이트 되도록 하는 S3 를 통한 웹 서버 구축 방법과 이 과정에서 알게된 것들을 적어보고자 한다. 0. S3는 VPC에서 구축되지 않는다. 맨처음 S3를 구축하기 위해서 여러 가이드를 참고해보다가 알게 된 사실이다.VPC를 먼저 만들고, EC2처럼 그 위에 S3를 구축해야할 줄 알았는데S3는 VPC위에 형성되는 것이 아니였다. 1. S3 버켓 만들기 및 object 먼저 배포해보기S3는 선택한 AWS Region에 나만의 "bucket"이라는 웹 스토리지 서버를 구축해서 사용한다.그렇기에 Region의 선택은 필수이다. 이때 Region 선택.. Image 파일은 서버를 거치지 않아도 된다. 게시글을 업로드하는 기능을 구현하는 중에이미지 파일이나 영상 파일, 기타 pdf 파일 등을 업로드 할 때 서버에 어떻게 주어야 할 지를 생각하고 있었다.처음에는 blob을 통해서 파일을 blob형태( Binary large object ) 로 변환해서 서버에 직접보내고,서버는 이 데이터를 받아서 정적 서비스에 따로 저장하는 방식을 사용해야 할 줄 알았다. 그런데 그게 아니였다. github나 notion등 기타 마크다운 에디터들에서 어떻게 파일을 업로드 하는지계속 봐왔었는데, 자세히 보면 해당하는 파일을 직접 업로드하는게 아니라,파일을 올렸을 때, 해당 파일이 아니라, 몇 초 뒤에 내가 모르는 링크로 변환이 된다. 이미지 등 정적 파일에 대한 업로드의 형식이 어떤 식으로 진행되는지를 알아보자. 1. 일.. SPA 기능을 구현하는 웹 페이지의 CI/CD Pipeline 여태까지 소개했던 배포 방식은 순수하게 Spring boot를 통해WAS나 정적 페이지 혹은 어떻게 API를 구축하고 배포할지에 대한 내용이었다. 이제 여기에 프론트엔드의 작업물인 CSR 웹 페이지를 반환하고,여기에 API 까지 같이 구축하는 CI/CD 다이어그램를 구축해보면 아래의 그림과 같다. 기본적인 CI/CD의 흐름은 지난번 글들에서 소개한 Github Action을 사용한 CI/CD 파이프라인을 구축한 것과동일한데, 몇 가지 추가 사항 및 변동 사항이 있다. 1. AWS S3의 사용AWS는 정적 데이터를 제공하는 S3라는 서비스를 제공한다.이를 통해 HTML, CSS, JS, 이미지, 영상, 폰트 등을 제공할 수 있다.React로 만들어낸 CSR페이지와 같은 경우에도, npm run buil.. AWS EC2 Private Instance 구축 (2) VPC, 서브넷, IGW, 라우터 테이블 지난 번에 그려놨던 아키텍쳐를 토대로 VPC 및 서버(인스턴스) 설정의 절차를 소개하겠다. 1. Root 사용자 vs IAM 사용자일단 AWS "콘솔에 로그인" 을 누르면 IAM 사용자 로그인창이 먼저 뜨지만, 아래의 Sign in using root user email을 클릭하도록 하자. 그러면 오른쪽과 같이 나올 것이다.우리는 서버(인스턴스)를 생성하고,초기 설정을 해야하기 때문에 root 사용자를 선택해야 한다. Root 사용자 : 모든 AWS의 권한을 갖고 있는 사용자인스턴스 및 서비스의 생성, 관리 및 삭제를 할 수 있다.서버를 관리할 관리자 개념인 IAM 계정을 등록할 수 있다.그 외의 루트 권한이 필요한 모든 작업을 수행 가능하다.IAM( Identity and Acce.. Producer - Consumer 패턴 프로그래밍을 공부하다 보면 Producer와 Consumer라는 단어가 참 많이 보인다.그렇다면 Producer와 Consumer가 무엇이길래 이렇게 많이 등장하는 것일까?Producer - Consumer 패턴에 대해 알아보자. 1. Producer and Consumer Problem"The producer and consumer problem is one of the small collection of standard, well-known problems in concurrent programming. A finite-size buffer and two classes of threads, producers and consumers, put items into the buffer (producers).. GET 요청 시 Body(JSON)를 사용하지 않는 이유 서론.Spring Boot의 get 요청을 받는 함수에서 requestBody를 사용했더니 작동하지 않았다.나는 당연히 이런 것 또한 될 줄 알았는데 되지 않았다. 내가 requestBody를 사용한 이유는 다음과 같다.어떤 user가 작성중인 draft를 가져오는 API를 만들고 싶었다.그런데 해당하는 user의 draft에 대한 draft 번호와, user의 번호를 둘 다 받은 다음service상에서 해당하는 draft의 번호로 얻어온 draft 데이터에 user 번호가 매칭되지 않는다면,이는 권한이 없는 행위이기에 이에 대한 예외처리를 하기 위함이었다.그런데 Spring Boot에서는 Get요청에 대한 requestBody가 적용되지 않는다고 한다.왜 그렇게 되는지를 좀 자세히 찾아봤고 흥미로운 내.. AWS EC2 Private Instance 구축 (1) Architecture 이 다이어그램은 Private EC2 instance로 접근이 가능하면서동시에 Private instance가 외부로 요청이 가능하게 하도록 하는 AWS VPC의 다이어그램이다.(정확 아키텍쳐는 아닌 것 같다.) 외부에서 내부로의 요청은 Public Bastion Instance가 SSH Turneling을 통해 이뤄지게 할 것이며,내부에서 외부로의 요청은 Public NAT Instance가 Elastic IP를 할당해 단방향 요청만이 이뤄지도록 할 것이다. 다만 NAT Instance의 경우, 예전에는 AWS에서 NAT Instance의 공식 설정을 지원해줬으나현재는 그렇지 않기 때문에 NAT Instance로 사용하기 위한 AMI를 직접 찾아서이를 사용한 Instance를 구축해야 한다.여기서 사용.. Spring bean (3) - 의존성 주입, Spring Framework의 의존성 관리 소프트웨어 개발을 하다보면 의존성이란 단어가 참 많이 나오는데, 객체 지향을 위한 SOLID 원칙 중 5번째인 D(Dependency Inversion Princilple)에서도 의존성이 나온다. 먼저 의존 역전 원칙을 어떻게 소개하는지 살펴보자. 1. 의존 역전 원칙(Dependency Inversion Principle) 먼저, 의존성이 무엇인지 파악해보자." the conventional dependency relationships established from high-level, policy-setting modules to low-level, dependency modules are reversed, thus rendering high-level modules independent of the.. 이전 1 2 3 4 5 6 다음