[Rookies 개발 2기] Nginx 404 에러 해결
·
SK 루키즈/Cloud
문제 시작기본 구조바야흐로 2번째 프로젝트를 AWS에 배포 마무리하던 중 에러가 발생하였다.먼저 간단히 구동 원리를 설명하자면 클라이언트(리액트)에서 채팅방을 입력하면 const enterChatRoom = (roomId) => { window.location.href = `/chatroom/${roomId}`; }; `App.js` 에서 아래와 같이 채팅방을 동적 라우트로 추가하고, function App() { return ( ``` } /> );} ChatRoom 컴포넌트에서 WebSocket의 앤드포인트로 연결한다. websocket.cur..
[Rookies 개발 2기] AWS S3 버킷 정책 오류 설정
·
SK 루키즈/Cloud
문제점 발생Rookies 개발 2기의 두 번째 프로젝트를 진행하는 과정에서 문제가 발생하였다.우리의 프로젝트는 간단히 설명하자면 기업용 메신저 애플리케이션이다. 사진과 파일처리는 DB를 쓰지 않고 AWS에서 제공하는 S3를 통해 제공하고자 하였다.다만 이 과정에서 문제가 발생하였다. 이런 식으로 채팅창을 만들고 사진을 보내면 내 어플리케이션에는 이런식으로 사진이 뜨지만 상대방 화면에서는 뜨지 않는 게 확인되었다. 한 개의 계정으로만 개발하고 테스트하여 나중에 확인된 문제였다.  의심 과정첫 번째 의심: S3 업로드 오류먼저 사진이 정상적으로 업로드되지 않았나? 를 의심하며 접속하여 확인하게 되었다.  예시로 보낸 사진이며 해당 객체 URL을 받아 상대방의 애플리케이션에도 뿌려주게 되는 구조이다. 여기서 ..
[Rookies 개발 2기] Docker를 통해 Kafka 연결하기
·
SK 루키즈/Cloud
Kafka란?대용량 데이터 스트리밍을 처리하는 분산형 메시지 브로커이다.실시간 데이터 스트리밍을 위해 게시-구독(pub-sub) 모델을 사용하며 높은 처리량과 확장성을 제공하는 분산 이벤트 스트리밍 플랫폼이다. 예를 들어 Youtube의 구독을 하면 알람 시스템처럼 이벤트를 발생하면 실시간 데이터 스트리밍을 지원한다.또한 쿠팡, 인터파크 등 장바구니를 담을때 DB를 사용하지 않고 실시간으로 처리할 수 있으며,Kafka는 단순한 메시지 브로커를 넘어 데이터 처리 파이프라인을 구성하는 데 최적화된 솔루션이다. Kafka는 이 글을 읽고 있는 상당수가 아는 LinkedIn에서 개발되었으며 Apache Software Foundation에서 오픈소스로 사용할 수 있다.https://kafka.apache.org..
[Rookies 개발 2기] AWS 서버리스 개념과 ECS와 Lambda
·
SK 루키즈/Cloud
AWS 서버리스란? AWS 서버리스는 MSA(Microservices Architecture)에서 특정 서비스를 서버리스로 구성하는 데 유용하다. 이 방식은 개발 주기를 단축시켜 주며, 독립적이고 신속하게 업무를 처리할 수 있게 해 준다. 또한, 서비스 수요에 따라 가용성을 적절히 조절할 수 있는 확장성을 제공한다. AWS에서 제공하는 서버리스 서비스 중 대표적인 서비스는 Lambda이다. Lambda는 서버리스 컴퓨팅 서비스로, 서버를 프로비저닝하거나 관리할 필요 없이 코드만 업로드하면 실행할 수 있다. 반면, ECS는 Docker 컨테이너 기반으로 애플리케이션을 실행할 수 있게 해주는 컨테이너 관리 서비스다. 이 두 서비스는 사용 방식과 장점이 다르기 때문에 살펴보도록 하자. ECS  ECS는 Doc..
[Rookies 개발 2기] MSA와 EurekaServer 세팅
·
SK 루키즈/Cloud
MSA란?  MSA (MicroService Architecture) 마이크로서비스 아키텍처의 약자로 아키텍처는 애플리케이션을 작고 독립적인 서비스들로 나누어 각 서비스를 독립적으로 개발, 배포, 확장할 수 있는 아키텍처이다. 각각의 서비스에 최적의 아키텍처를 설계 가능하며, 하나의 서비스의 장애가 전체 서비스에 영향을 주지 않는다. 특징은 아래와 같다.독립적인 서비스각 서비스는 독립적이며, 특정 비즈니스 기능을 담당분산 시스템각 서비스가 독립적으로 동작하고, 독립적인 데이터베이스를 가질 수 있음배포 단위서비스별로 독립적으로 배포가 가능하고, 각 서비스는 별도의 환경에서 운영될 수 있음도커 베이스 컨테이너 기반기술 선택 자유각 서비스는 필요한 기술 스택을 선택하여 개발할 수 있음예를 들어, 하나의 서비스..
[Rookies 개발 2기] AWS S3 에 Spring 업로드 처리
·
SK 루키즈/Cloud
시작프로젝트 생성먼저 IntelliJ에서 새 프로젝트를 생성한다. 프로젝트구성은 SpringBoot로 종속성은 아래와 같이 간단히 추가하겠다. build.gradle그리고 build.gradle 에 아래와 같은 내용을 추가해 준다. implementation platform('software.amazon.awssdk:bom:2.20.147') // AWS SDK BOMimplementation 'software.amazon.awssdk:s3' // S3 클라이언트implementation 'org.springframework.boot:spring-boot-starter-validation' // 파일 유효성 검증에 사용implementation 'org.springframework.cloud:spring..
[Rookies 개발 2기] S3 AWS KEY 발급
·
SK 루키즈/Cloud
먼저 IAM > 사용자에 들어가 자신의 계정을 클릭한다.  해당 화면이 보이면 액세스 키 만들기를 클릭한다.  여기서 우린 EC2와 같이 AWS컴퓨팅 서비스를 실행하기 위함이므로  해당사항을 체크한다. 액세스 키와 비밀키가 발급되고 해당 키는 다시 열람 할 수 없으므로,메모하거나. csv파일로 다운로드하여서 확인한다.  이렇게 키가 발급되고 들어가서 확인 할 수 있다.
[Rookies 개발 2기] React + SpringBoot + MySql CI/CD (2)
·
SK 루키즈/Cloud
백엔드 시작이번엔 백엔드 파트이다. 설정등 많은 부분이 프런트와 비슷한 결이므로 빠르게 진행하겠다.작업 순서는 아래와 같다. Spring의 보안 설정 후GitAction Security 설정EC2 업로드 및 배포SecuritySpring 설정먼저 `application.properties` 파일로 가서 맨 아래에 ip주소를 변수로 만들어 주자. #Custom settings (protocol, domain, port)app.release_ip=http://내 ip주소app.release_domain=http://www.example.comapp.dev_ip=http://localhost:3000 여기서 제일 중요한건 `release_ip`이며 나머지는 추후를 위해 생성해 둔 것이다. 그렇다면 이 변수를 ..