면접 스터디를 본격적으로 시작한 하루이다.이런 저런 일로 오후 내내 정신이 없었고 저녁에 인성 면접 질문과 이력서 포트폴리오 기반 질문을 뽑아보았다. 어떻게 내 포트폴리오에서 질문을 만들기 위해 포커싱 해야할 지 어려웠다.GPT가 추천해준 질문은 조금 추상적이여서 크게 도움이 안되었다. 내가 사용한 키워드 위주로 뻗어나갈 수 있는 가지들을 기록하고 스스로 답변해보는 방식으로 공부하였다.혼자서도 잘 안되어서 백호한테 질문을 뽑아달라고 요청했다. 확실히 혼자 준비하는 것보다 다른 사람들에게 물어보는 것이 제일 효과적이다 👍 오늘 공부한 것 301와 302 상태 코드의 차이. 302 상태코드와 함께 리디렉션 요청을 보냈을 때 클라이언트의 동작 HTTPS의 동작 방식SSL의 암호화 방식중간자 공격 방지 원리인..
오늘 한 작업은 두 가지이다. 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 동안 기술에 주도적으로 관심을 가지고 파고드는 것보다, 서비스를 운영하며 주어진 피쳐들을 쳐내면서 시간을 보냈다. 이 프로젝트에서 어떤 경험을 하고 싶은지, 내가 어떻게 해야 주도적으로 서비스의 발전에 의미있는 영향을 줄 수 있을지 충분히 고민하지 않았기 때문에 방황했다. ..
2024년 7월 29일 - 8월 2일 시간이 너무나 빠르게 흘러 벌써 5주차이다. 이번 주 ✨모우다 ✨팀은 무엇을 했을까?🧗♀️ 빠른 기능 개발이번 주는 3차 스프린트의 첫 주차를 보냈다. 지난 주차 스프린트를 마무리하며, 3차 스프린트에서는 최대한 빠르게 기능 개발을 하고 사용자 피드백을 받는 것을 목적으로 삼았다. 2차 스프린트에서는 MVP를 아주 작게 잡아서 구현하는 것이 너무 쉬웠었다. 이번 스프린트에서는 5배는 많은 기능을 구현하기로 가닥을 잡았고 돌아가는 쓰레기를 만들어보자고 다같이 협의하였다. 새로 도입한 여러 가지 기능 중 나는 채팅 기능을 호기, 소파와 맡았고 제일 간단한 구현 방식으로 구현에 완료하였다.채팅 기능을 맡게 되면 도전적인 개발을 할 수 있을거라는 생각이 들었기 때문..