728x90

커뮤니티 플랫폼 프로젝트 5

[AWS]백엔드 배포 오토 스케일링 정리-2

1. Pod 스케일링1-1. HPA(Horizontal Pod Autoscaler)와 Metrics Server 설치파드 스케일링이 진행되려면 파드의 수를 자동으로 늘리거나 줄여주는 쿠버네티스 리소스가 필요하다. 이 역할을 하는 것이 HPA다. 그런데 이 HPA가 파드의 수를 늘리거나 줄여주는 행동을 하는데 있어,CPU 혹은 메모리 사용량 같은 기준점이 있어야 한다. 따라서, 클러스터 내 각 노드와 파드의  CPU와 메모리 사용량을 수집하는 컴포넌트가 필요한데 이것이 Metrics Server다. 즉, Metrics Server가 HPA에게 CPU와 메모리 사용량과 같은 데이터를 전달해주고 그 데이터를 바탕으로 HPA가 스케일 인/아웃을 결정한다)*스케일 아웃: 서버나 노드,인스턴스의 개수를 늘리는 것*..

[AWS]백엔드 배포 흐름 정리-1

본 포스트는 단계별로 상세히 기술한 것이 아니라 흐름별로 정리하여처음 배포할 때 따라하기엔 부적합합니다.배포를 한 번 완료해 본 상태에서 흐름 정리용으로 보실 것을 권합니다.0. 먼저 백엔드의 CORS 관련 코드에 프론트 배포된 도메인을 추가한다.CORS는 어떤 Origin에서 온 요청을 허용할 지 판단하는 것으로 여기에 도메인을 추가해준다.1. AWS에서 EKS, RDS, ElastiCache(Redis OSS)를 생성한다.1-1.EKS백엔드 배포는 EKS 클러스터를 통해 진행하므로 EKS를 먼저 생성한다.생성시에 태그값을 입력하는 칸이 있는데 EC2 AutoScailing까지 염두해두고 아래와 같은 태그값을 붙였다.- 키:k8s.io/cluster-autoscaler/enabed,값:true -> 클..

[AWS] 프론트 배포 흐름 정리

본 포스트는 각 단계별로 상세히 기술한 게 아니라 흐름별로 정리하여처음 배포할 때 보고 따라하기엔 부적합 합니다.배포를 다 한 상태에서 흐름 정리용으로 보시는 것을 추천드립니다.   프론트 배포는 AWS의 S3의 정적 웹 사이트 호스팅을 이용하여 진행하였다.(Vercel을 이용한 매우 편한 방식도 있으니 참고)  S3에는 css,fonts,img,js폴더가 업로드 되어야 하는데,프론트 코드가 있는 위치에서 npm run build 명령어를 치면 dist폴더가 만들어진다. 해당 폴더에 있는 자료를 모두 업로드 하면 된다.그리고나서 아래 버킷 웹사이트 엔트포인트로 들어가서 프론트 화면이 잘 떠지면 성공한 것이다. 그리고 접속 도메인을  깔끔하게하기 위해 Route53에 연결, Https 인증서 처리를 위해 ..

[Spring]조회수 기능(Redis,Spring Scheduler활용)

조회수를 레디스에 저장,조회하고 RDB에 Scheduler를 활용하여 동기화 하는 방식 1. RedisConfig 클래스 -우선 레디스 연결 객체를 만든다.public class RedisConfig { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port;//yml에 기입해둔 Redis 호스트명과 port번호를 Value어노테이션을 통해 가지고와 속성으로 선언해둔다. //왜냐 레디스의 설정을 담당하는 RedusConnectionFactory객체를 만드는데 우리가 연결할//레디스 서버의 host명과 port번호가 필요하니까 //조회수 관련 @Bean ..

[Spring] 좋아요 기능(Redis,RabbitMQ활용)

좋아요 값을 레디스에 저장하고 조회하고, DB에는 RabbitMQ를 통해 동기화 하는 방식 0.좋아요 엔티티@AllArgsConstructor@NoArgsConstructor@Builder@Entitypublic class Likes extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "postId") Post post; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "userId") User user;}..