목록photocard backend server 개발일기 (41)
개발일기

기존에 EC2 프리티어 서버 용량이 간당간당하였다. 94퍼를 차지하고 있어 서버도 많이 느리고, 프론트와 백엔드 통신할 때 생각보다 오래걸렸다. 그래서 서버를 최대한 최적화 해주기로 결정하였다. 기존에 EC2에 저장되었던 Mysql -> RDS Mysql 로 바꿔주었다. 서버에서 확인 해보니 전체 용량이 96퍼정도를 사용하고 있었음 그래서 안쓰는 이미지들을 제거 해주고 , Mysql을 날려준 것을 삭제해주기 위하여 docker image prune -a 해당 명령어를 사용해주었다. 그러니 전체 용량이 96퍼에서 -> 82퍼로 엄청 줄어들었다. 하지만 아직도 docker가 차지하고 있는 용량은 너무 많은 것처럼 느껴졌다. Docker 에서 모든 사용하지 않는 자원 삭제docker system p..

MySQL을 선택한다. AWS 프리티어를 선택해준다. DB인스턴스 식별자 마스터 사용자 이름 마스터 암호등을 작성해준다. t4g.micro 선택 할당된 스토리지는 20 Gib 스토리지 자동 조정은 해제해준다. 해당 부분들을 선택해준다. 퍼블릭 액세스는 허용해주었다. VPC 보안그룹도 설정해주었는데 나의 경우 이미 해준 것이 있어 해당 VPC를 설정해주었다. 초기 데이터 베이스 이름 작성 및 백업을 해제 해주었다. 나의 경우 맨밑에 삭제 방지 활성화도 해주었다. 나중에 삭제해야한다면 삭제 방지 활성화를 풀어주면 된다. 이후에 생성해준다. 그러면 데이터베이스가 생성된다. 데이터베이스를 사용하기에 앞서, RDS 운영환경에 맞는 파라미터를 설정해주자. 초기 AWS RDS를 셋팅할 때 파..

우선 일단 RDB 에다가 저장하는 채팅부터 구현 후, 리팩토링을 통해서 Redis, Message Queue를 사용하여 개발할 예정이다. 추후 진행할 때, 왜 이렇게 구현해야하는지 작성할 예정이고 지금은 Spring Boot 코드를 작성할 것이다. 나는 React + Next.js 가 프론트이기 때문에 프론트 코드는 작성하지 않을 예정이다. 인터넷을 보면 많이 있으니 해당 코드를 보면서 참고하여 구현하면 되겠다. 😜 디렉토리 구조 message│├── controller│ ├── request│ │ ├── CreateChatMessageRequest│ │ └── CreateChatRoomRequest│ ├── response│ │ ├── CreateChatRoomRes..
version: '3'services: rabbitmq: image: rabbitmq:3-management-alpine container_name: rabbitmq-stream volumes: - ./.docker/rabbitmq/etc/:/etc/rabbitmq/ - ./.docker/rabbitmq/data/:/var/lib/rabbitmq/ - ./.docker/rabbitmq/logs/:/var/log/rabbitmq/ ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_ERLANG_COOKIE: "My-Cookies" RABBITMQ_DEFAULT_U..

🤔 STOMP란? - Simple Test Oriented Messaging Protocol 의 약자로, 웹소켓의 서브 프로토콜입니다. - 클라이언트와 서버 간 전송할 메시지의 유형, 형식, 내용들을 정의한 규칙(Frame) - 웹 소켓과 같은 양방향 네트워크 프로토콜 기반으로 동작 - STOMP는 브로커와 연결된 클라이언트 간에 메시지를 교환 하는 방식으로 동작 ❓어떤 장점이 있지?spring boot에서 사용할 시 장점:)1. 메세징 프로톨과 메세징 형식을 개발할 필요가 없다.2. STOMP 클라이언트는 Java클라이언트를 포함해서 사용할 수 있다. 3. 메시지 브로커를 사용하면 구독을 관리하고 메시지를 broadcast하는데 사용할 수 있다. 웹소켓과는 다르게 다음 특징을 가지고 있다. ?..

웹 소켓(Web Socket)이란? 웹 소켓이란 두 프로그램 간의 메시지 교환을 위한 통신 방법 중 하나입니다. 웹 소켓 특징양방향 통신(Full-Duplex)- 데이터 송수인을 동시에 처리할 수 있는 방법- 클라이언트와 서버가 서로 원할 때만 데이터를 주고 받을 수 있음. - 통상적인 Http 통신은 Client가 요청을 보내는 경우에만 Server가 응답을 하는 단방향 통신 but ,웹 소켓은 양방향 통신이 가능 실시간 네트워킹 (Real Time-Networking)- 웹 환경에서 연속된 데이터를 빠르게 노출 - ex) 채팅, 주식, 비디오 데이터 웹 소켓이 나오기전 양방향 통신 방식1. Polling일정한 주기로 서버에 요청 (Request)을 보내는 방법이며, setTimeout, set..

build.gradle 설정을 해주었다. //oauth2implementation 'org.springframework.security:spring-security-oauth2-client'implementation 'org.springframework.security:spring-security-oauth2-jose' Oauth2.0 설정을 위하여 로그인 흐름을 그려보았다. 1. 로그인 요청 기본적으로 Spring Security에서 기본적으로 제공하는 URL이 있음.http://{domain}/oauth2/authorization/{registrationId} 해당 URL을 시큐리티에서 구현해두었고, 따로 Controller를 제작하지 않는다.2. 리다이렉트 URL SpringSecurity에서 기본..
본격적인 Github Action CI/CD세팅 전에 CI/CD란 무엇인지 꼭 해야하는지 알아보자! 우선적으로, CI/CD란?CI/CD는 Continuous Integration(CI) 와 Continuous Delivery/Delpoyment(CD) 통합해서 부르는 용어이다. CI/CD는 개발 과정에서 필요한 빌드, 테스트, 배포 등의 과정을 자동화 해준다. CI/CD 자동화를 통해서 개발자들은 코드를 자동으로 테스트하고 배포할 수 있으며, 효율적인 작업이 가능해진다. 왜 CI/CD를 해야하는가? 우선적으로, 위에 내용만 보았을 때, CI/CD는 무조건 해야한다고 판단한다. 물론 수동으로 서버를 배포하는 방법도 있겠지만, 앞으로 서비스를 계속해서 운영한다면 코드를 수정하고 이를 계속해서 배포해야하는데..