오늘 한 작업은 두 가지이다. EC2 서버에 띄운 프로메테우스와 그라파나 대시보드를 로컬 웹 브라우저에서 접근하기 위한 설정로드 밸런서가 보낸 요청을 EC2 서버에서 받기 위한 설정추가로 Jmeter와 Postman을 사용해 서비스의 TPS를 측정해보았는데, 이는 다음에 포스팅해보겠다. 💪 프로메테우스와 그라파나를 Ubuntu 환경의 EC2 서버에 띄웠다. 그 다음 각각의 프로세스를 로컬 브라우저에서도 쉽게 경로로 확인하기 위해 Nginx 설정을 하였다. https://api.dev.mouda.site/prometheus https://api.dev.mouda.site/grafana 이렇게 URL을 입력했을 때 EC2 서버의 지표와 시각화 자료를 확인하는 것이 목적이었다.server { server_na..
Spring Actuator, Prometheus와 Grafana를 사용해 JVM의 정보를 모니터링 대시보드에 보여주기 위한 시스템을 구축하였다.🍃 Spring ActuatorSpring Actuator는 스프링 애플리케이션에서 CPU나 메모리 사용량 등을 확인하기 위한 지표를 제공하고 관리하기 위한 도구이다. implementation 'org.springframework.boot:spring-boot-starter-actuator' 해당 의존성을 추가하면 Spring Actuator를 사용할 수 있다. 아래와 같이 application.yml에 애플리케이션의 상태를 노출할 경로를 지정해주면 해당 엔드포인트에서 지표의 값을 확인할 수 있다.management: endpoints: web: exposur..
🤔 인증과 인가 인증 (Authorization) 이란 우리 서버에 접근하는 사용자의 신원을 확인하는 과정이다. 이를 위해서는 사용자마다 식별 가능한 정보가 필요하다.인가 (Authentication) 이란 인증된 사용자가 접근할 수 있는 자원인지 확인하는 과정이다. 😛인증과 인가를 구현하는 방법 HTTP는 기본적으로 무상태성 (stateless)이기 때문에 인증 정보를 유지하기 위해서 사용자를 식별할 수 있는 인증 정보를 어디엔가 저장해야 한다. 이 정보를 저장하는 위치와 방법은 다양하다. 브라우저에 인증 정보를 저장하는 방법세션 (session) 이란 사용자가 서버와 상호작용하기 위한 하나의 단위를 의미한다. 사용자가 서버에게 접근을 허가받았을 때 세션 아이디를 발급한다. 넓은 개념에서 하나의..
2024.09.09 - [우아한테크코스/레벨4] - [회고] 한 달 간 글을 작성하지 않은 이유 🥲 그런데 이제 레벨 3 회고를 곁들인 ... [회고] 한 달 간 글을 작성하지 않은 이유 🥲 그런데 이제 레벨 3 회고를 곁들인 ...8월 4일을 마지막으로 회고를 작성하고 한 달 넘게 회고를 작성하지 않았다. 여러 가지 이유가 있지만, 레벨 3 를 지내오면서 기술적으로 아쉬운 부분들에 대해서 돌아보고 개인적으로 성장하mingyum119.tistory.com9월 9일에 이 글을 작성했었다. 오늘 회고에서는 그 이후로 약 3주 간 어떤 변화가 있었는 지 돌아보려고 한다.레벨 4에는 우리 서비스가 하나의 소프트웨로서 더 가치있도록 하기 위해 서비스에 대한 고민과 통찰을 깊이 해보는 경험을 하고 싶다. 이 ..
인덱스란?데이터베이스에서 데이터를 조회할 때 빠른 조회를 위한 것이다.왜 인덱스를 사용하면 조회가 빨라질까?인덱스는 트리 구조로 데이터를 저장한다. 테이블을 풀 스캔하는 경우 (테이블 스캔) 와 달리 인덱스를 사용하면 정렬된 데이터를 기준으로 루트 노드에서 리프 노드까지 빠르게 데이터를 탐색 (인덱스 스캔) 할 수 있다.기존 테이블 풀 스캔이 O(N)의 시간 복잡도라면 트리 구조를 사용한 이진 탐색은 O(logN)의 시간복잡도를 가진다.정확히 어떤 자료구조를 사용하는가?InnoDB를 기준으로 균형 잡힌 트리 (B-Tree, Balanced Tree)를 사용한다.단순 이진 트리를 사용할 경우 한 쪽에 치우친 트리가 생길 수 있어, 최악의 경우 선형 탐색과 다르지 않을 수 있다. 따라서 모든 노드에 대해 높..
로드 밸런싱의 목적CPU나 메모리와 네트워크가 부하가 될 수 있다. 특히 커넥션의 개수가 많아지면서 애플리케이션 단에서 OutOfMemoryError가 생길 수 있다. 스레드 풀 역시 고갈될 위험이 있다.스케일 아웃으로 이를 해결한다고 가정하자. 그렇다면 클라이언트의 요청을 잘 처리할 가능성이 높은 서버에게 요청을 전달하는 과정이 필요하다. 이런 역할을 하는 서버가 로드 밸런서이다. 가용성이란?서비스가 정상적으로 작동하는 시간가용성을 어떻게 측정할 수 있는가? 헬스 체크를 사용하여 전체 헬스 체크 시도 중 성공한 비율을 가용성이라고 볼 수 있다. AWS에서 사용하는 로드밸런스 기능을 사용하는 이유가 뭐야? 다른 로드 밸런서와 비교했을 때 장점이 있는가? ELB (Elastic Load Balancer)..
8월 4일을 마지막으로 회고를 작성하고 한 달 넘게 회고를 작성하지 않았다. 여러 가지 이유가 있지만, 레벨 3 를 지내오면서 기술적으로 아쉬운 부분들에 대해서 돌아보고 개인적으로 성장하고 싶은 부분들을 위해 전력 질주하느라 기존에 작성하던 블로그 회고를 계속 미뤘다. 여러 방면에서 찍먹하면서 기술을 사용만 해보는 것보다는,하나의 기술 (혹은 분야, 혹은 기능)에 대해 깊게 들어가보는 경험이 중요하다. 이 점을 간과하고 레벨 3 동안 기술에 주도적으로 관심을 가지고 파고드는 것보다, 서비스를 운영하며 주어진 피쳐들을 쳐내면서 시간을 보냈다. 이 프로젝트에서 어떤 경험을 하고 싶은지, 내가 어떻게 해야 주도적으로 서비스의 발전에 의미있는 영향을 줄 수 있을지 충분히 고민하지 않았기 때문에 방황했다. ..