분류 전체보기
-
"나야 503" : 추석 코레일 대란백엔드 : 서버공부 2025. 9. 30. 12:55
503 오류, 왜 추석 예매할 때 터졌을까?HTTP 상태 코드 중에서 5xx 계열은 서버 쪽 문제를 의미한다. 쉽게 말하면, 사용자가 잘못 요청해서 생기는 게 아니라 서버가 뭔가 감당을 못하고 있다는 신호다.그중에서도 503(Service Unavailable)은 “지금은 서비스 못 해준다”는 뜻이다. 서버가 완전히 죽은 건 아니고, 잠깐 재정비가 필요하거나 과부하로 숨 고르기를 하는 상황에서 나온다. 말 그대로 임시 휴업 같은 개념이다. 참고로 502는 걍 서버터진거다 ㅇㅇ추석 예매 대란과 5032025년 추석 승차권 예매 날, 코레일 홈페이지랑 앱이 한동안 먹통이 된 적 있다. 대기 화면을 켜놔야 연결이 유지된다느니, 계속 새로고침하느니 하는 얘기가 많았다. 결국 많은 사람들이 503 오류를 보게 된..
-
카카오톡 UI 개편이 남긴 교훈: 속도는 전략, 신뢰는 자산잡다한 글 2025. 9. 29. 12:25
카카오톡이 15년 만에 ‘빅뱅 프로젝트’라 불리는 대규모 개편을 단행했다.UI가 확 바뀌고, AI 기능이 추가되며, 카카오는 “현대화”를 강조했지만 반발도 적지 않다.이번 사건은 단순히 UI가 마음에 드냐, 아니냐의 문제가 아니다.스타트업식 속도전과 대기업식 리스크 관리라는 두 가지 다른 문화가 부딪혔을 때 나타나는 파장을 잘 보여준다.0. 카카오는 왜 대기업이고, 토스는 왜 스타트업일까? 둘 다 지금은 ‘규모가 큰 회사’지만, 조직의 성격과 운영 방식은 다르다. 카카오 직원 수만 수천 명에 달하고, 다양한 계열사(카카오게임즈, 카카오모빌리티, 카카오엔터 등)를 거느린 지주회사 구조. 상장 기업으로서 주주·규제·사회적 책임을 크게 의식해야 한다. 메신저 카카오톡은 국민 인프라급 서..
-
NEXT.JS 프로젝트 하신다고요? 축하드립니다.백엔드 : 서버공부/Node.js 2025. 9. 7. 10:45
8월엔 참 많은 일이 있었다. 스타트업에 취업도 하게되고 다니던 부트캠프도 그만 두고 .. 이번 글은 앞으로 당분간 쓰게될 NEXT.js 에대해 간단하게만 정리해보고자한다. 모두가 리액트를 할때 NEXT.JS를 하는 심정이란.. Next.js의 탄생 배경우리가 흔히 웹사이트를 만들 때, 프론트엔드와 백엔드를 따로따로 작업하는 방식이 많았는데, 이는 여러 가지 문제를 안고 있었다. 그 중 대표적인 게 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR)의 장단점이었다.서버 사이드 렌더링은 페이지 로딩 속도에서 유리하지만, 개발과 유지보수가 번거로웠고, 클라이언트 사이드 렌더링은 인터랙티브한 사용자 경험을 제공하지만 SEO(검색엔진 최적화)에 문제가 있었다. 이러한 문제를 해결하고자 2016년..
-
'MSA 하자고? ' : 인기 보관소 Top5 캐시 설계기백엔드 : 서버공부/Spring 2025. 8. 9. 16:27
이번 글에서는 MSA 환경에서 인기 보관소 Top5 데이터를 효율적으로 캐싱하기 위해 어떤 고민을 했고, 어떻게 해결했는지 공유해 보려고 합니다.1. 문제 상황진행중인 프로젝트의 홈 화면에는 인기 보관소 Top5를 보여주는 기능이 있습니다.홈화면에 있는 기능이기 때문에 데이터는 자주 조회되고, 사용자 수가 많아질수록 DB 부하도 커집니다.처음에는 Caffeine 로컬 캐시를 적용해서 성능을 개선했지만, MSA 환경(여러 서버 인스턴스)에서의 문제를 고려하고자 재설계를 진행하였습니다.발견한 문제들인스턴스별 데이터 불일치각 서버가 독립적으로 캐시를 가지다 보니 데이터가 서로 달라짐재시작 시 캐시 초기화서버가 재시작되면 캐시가 비어 DB 쿼리가 폭증캐시 무효화 어려움한 인스턴스에서 데이터가 바뀌어도 다른 인스..
-
'카페인 캐시 제 1형' : 인기 보관소 로컬 캐시 적용하기백엔드 : 서버공부/Spring 2025. 8. 7. 16:54
복잡한 쿼리대신 가볍고 빠르게서비스의 홈 화면에는 사용자에게 인기 보관 지역 정보를 보여주는 기능이 있다. 홈은 사용자가 앱을 켰을 때 가장 먼저 도달하는 화면이고, 그만큼 자주 접근하게 된다.초기에는 이 데이터를 매번 DB에서 조회하는 방식으로 처리했지만, 홈 화면 특성상 요청 빈도가 높아질수록 불필요한 부하가 발생할 수밖에 없었다. 이 문제를 해결하기 위해 캐시 도입을 고려했다.빠르고 가벼운 선택 : 로컬 캐시캐시 도입에 있어 먼저 선택한 것은 로컬 캐시였다. 이유는 다음과 같다.프로젝트에서 이미 락 데이터를 관리하기 위해 Caffeine 캐시를 사용 중이었다.인기 보관소는 실시간으로 변하지 않으며, 일정 주기로만 업데이트되어도 큰 문제가 없다.로컬 캐시는 네트워크 지연 없이 빠르게 데이터를 제공할 ..
-
Grafana와 Prometheus로 모니터링 구축하기백엔드 : 서버공부/Spring 2025. 8. 4. 15:38
들어가며이번 프로젝트를 진행하면서 서버의 메모리 사용량 등 시스템 상태를 모니터링할 필요가 생겼다. 이를 위해 Grafana와 Prometheus를 활용한 모니터링 환경을 구축하고자 한다.사실 이전에도 스프링 레거시 환경에서 해당 도구들을 적용하려 했지만, 의존성 문제로 인해 도입이 쉽지 않았다. 그러나 이번에 Spring Boot로 전환하면서 다시금 시도해볼 수 있는 기회가 생겼다.1. 모니터링이 필요한 이유다음과 같은 상황에 대비하기 위해 모니터링 시스템은 필수적이다.CPU, 메모리 사용량 등 시스템 자원을 실시간으로 확인장애 발생 여부 및 예외 로그를 빠르게 파악단순히 1시간 간격으로 상태를 점검하거나, 모든 기능을 수동으로 테스트하는 방식은 비효율적일 뿐 아니라 실시간성이 떨어진다. 반면, 모니터..
-
AOP 이해할 수 있다!백엔드 : 서버공부/Spring 2025. 7. 28. 17:42
들어가며스프링 개발에서 정말 어려우면서 중요한 개념이 AOP이다.AOP를 깊게 파고들면 정말 어려운데..그래서 오늘은 가볍게 개념을 정리해보려한다!할 수 있다능! AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)이란?개발을 하다 보면 핵심 비즈니스 로직 외에 반복적으로 들어가는 부가기능이 생긴다.예를 들어 로그 출력, 트랜잭션 처리, 보안 체크 같은 것들이다.이런 부가 기능을 매번 비즈니스 로직에 섞어서 작성하면, 코드는 지저분해지고 유지보수도 어려워진다.그래서 이런 공통 기능들을 따로 분리해서 필요한 곳에만 자동으로 적용할 수 있게 도와주는 방식이 AOP(관점 지향 프로그래밍)이다. AOP는 왜 쓸까?위 설명에서 알 수 있듯이 AOP를 사용하면 핵심 비즈니스 로직은 로직..