AWS 썸네일형 리스트형 Dynamodb 이슈해결 , 페이지네이션 제가 채팅서비스를 구현한 아키텍처의 구조는 다음과 같습니다. 기존 채팅서비스는 ChatMessage chatMessage = dynamoChatRepository.findById(chatId).orElseThrow(() -> new ApplicationException(ApplicationErrorType.CHAT_NOT_FOUND)); 다음과 같은구조로 채팅방에 있는 모든 채팅을 읽어와서 service로직에서 정렬 및 필터처리를 수행하였습니다. ISSUE 데이터가 쌓임에 따라 점점 데이터에 과부하가 발생하는 문제가 발생하였고, 어떻게 해결할 지 찾아보았습니다. 첫번째 해결방안 다음 그림처럼 20페이씩 읽어오고 이전페이지를 읽어오려면 "이전 메세지를 불러오기" 를 클릭하여 페이지네이션을 하는 방법이 있었.. 더보기 nginx port 분리하여 blue/green 배포 dockerfile FROM openjdk:11 ARG IDLE_PROFILE ARG JAR_FILE=*.jar ENV ENV_IDLE_PROFILE=$IDLE_PROFILE COPY ${JAR_FILE} app.jar RUN echo $ENV_IDLE_PROFILE ENTRYPOINT ["java", "-Dspring.profiles.active=${ENV_IDLE_PROFILE}", "-jar","/app.jar"] application.yml spring: profiles: group: development: - common - development_database - port_8080 production-set1: - common - production_database - port_9001 pro.. 더보기 [Spring] 배포 서버의 도커 컨테이너에 크롤링 환경 구축하기 배포 서버의 도커 컨테이너에 크롤링 환경 구축하기 ⚙️ 개발 환경 AWS ubuntu EC2 Java 11 Gradle Spring boot 문제가 발생했다. 자꾸 크롬드라이버의 경로를 못찾음 ... 뭐지뭐지 ... 📍 Dockerfile : 도커 컨테이너에 크롬 브라우저 및 크롬 드라이버 설치 후 배포 FROM openjdk:11 COPY ./build/libs/TeamPlanner-BE-0.0.1-SNAPSHOT.jar application.jar RUN apt-get -y update RUN apt -y install wget RUN apt -y install unzip RUN apt -y install curl RUN wget https://dl.google.com/linux/direct/goog.. 더보기 로드밸런싱 , 다중서버 oauth 401 error 아 정말 삽질을 많이했던 것 같다 순수 시간으로만 거의 1~2일 걸린 것 같다. 왜 안되는거지 왜 안되는거지 고민을 많이했었는데, 결국에는 내가 이겼다. ㅋㅋ 현재 현재 다음과 같은 구조로 다중서버에 로드밸런싱 라운드로빈 방식으로 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식으로 라우팅해주고있다. 이때 , oauth2 로그인을 하는데 있어서 오류가 발생했다. 왜? 오류가 발생했을까 ? 처음 카카오 로그인 화면이 뜨고 로그인을 하게됐을 때 401 unauthrization error 가 떳고 처음 카카오 인증서버에 인증에 성공하고 redirect하는 시점에 로드밸런싱 주소를 가르키고 있는데 이때 라운드로빈 방식이므로 처음 요청했던 서버와는 다른 서버에 다시 redirect가 되어 쿠키 및 세션이 제.. 더보기 채팅서비스 sql vs nosql mongodb ? dynamodb ? 채팅서비스를 개발하면서 데이터베이스에 채팅내용을 저장할 일이 생겼다. 주워들은 건 많아서 채팅 서비스를 많은 기업에서 nosql을 사용해서 저장하는 걸 알고 있었지만 왜? 사용하는지 알지 못하기에 한번 정리하고 가면 좋을 것 같아서 정리해봅니다. 또한 nosql 의 대표적인 mongodb와 aws 에서 지원하는 nosql dynamodb 의 차이점을 정리하고 갑니다. 1. 채팅서비스 왜 noSql을 사용하는거야 ? RDBMS에 채팅 내용을 담으면 I/O비용이 크다. I/O 비용이 크다는 말은 데이터를 넣고 빼는데 리소스(cpu, disk, memory)를 사용하는 량이 크다.그에 비해 NoSQL은 상대적으로 적습니다.\ 확정성에 용의하다. 채팅서비는 대규모 동시 사용자와 데이터를 다루어야 한다. nosq.. 더보기 aws codedeploy 블루/그린배포 중 오류 blue / green 배포 ci/cd 도중 발생한 에러 모든 설정 다 했는데 자꾸 실패.. 왜 자꾸 실패하는지 모르겠습니다. 심지어 UnknownError라고 합니다ㅠㅠ EC2 인스턴스 재부팅, codedeploy-agent 재설치도 해봤지만 같은 문제가 계속 발생했습니다.. EC2에 설치한 codedeploy-agent codedeploy-agent 서비스의 상태를 확인해봤습니다. 설치 후 실행 확인 시에는 정상이라 문제가 없다 생각하고 그냥 넘어갔었습니다.. 혹시 몰라 로그 파일(/var/log/aws/codedeploy-agent/codedeploy-agent.log)을 봤습니다. 그랬더니.. 에러가 계속 발생하고 있었습니다!!!! 그래도 일단 원인은 찾았어요. :) 현재 IAM 정책 EC2의 I.. 더보기 NAT Gateway를 왜 쓰는걸까 ? public 서브넷은 인터넷과 연결하여 외부에서 접근이 가능한 영역을 말한다. 따라서 public 서브넷과 인터넷 게이트웨이를 연결시킴으로서 외부 인터넷과 통신이 되게 하였다. private 서브넷은 외부 인터넷을 차단하고 내부에서만 사용하기 위해 만든 Subnet이다. 예를 들어 Database Service인 RDS를 넣어두고, RDS는 중요한 정보이니 외부에서의 접속을 차단하는 형태로 이용한다. "그런데 만일 RDS가 외부 인터넷을 통해 업데이트를 해야 할 일이 생긴다면 어떻게 해야할까?" 공인 IP를 생성해서 private 서브넷도 Internet Gateway를 통해 연결해줘야할까? 그러면 그건 public 서브넷이지 private가 아니게 된다. 그리고 외부에서도 침입이 가능해져 보안이 문제가.. 더보기 AutoScaling 시작템플릿설정 실제 시작 템플릿 생성 화면 오토 스케일링 조정 옵션 Auto Scaling 그룹을 조정하는 다양한 조건 방법을 설정하는 옵션이다. 예를들어, CPU 점유율이 일정 %를 넘었을 때 추가로 늘리거나 아니면 2개 이상이 필요한 스택에서 EC2 하나가 죽었을 때 실행하거나 등 현재 인스턴스 수준 유지 관리, 수동 조정, 일정을 기반으로 조정, 온디맨드 기반 조정 등등 이 있다. CloudWatch이나 ELB(부하 분산)와 연계가 가능하다. 아래 사진과같이 어느 when일떄 take the action할지 옵션 조정 메뉴가 있다. 오토스케일링 동작 원리 복잡하지만 최대한 간단하게 요약하자면 다음과 같이 된다. EC2 인스턴스 클러스터 가 있고 8개의 인스턴스가 필요하다고 가정해보자 하드웨어가 터졌다던지 소프트웨.. 더보기 이전 1 2 3 다음