There are 40 posts.

서버 병목현상 추적기

September 10, 2024

갈만해 프로젝트를 소개합니다 갈만해 웹사이트 갈만해 Github Pasted image 20240912211252 '갈만해'라는 웹서비스를 운영하고 있습니다. 블로그에 웹 서비스를 개발하며 겪은 문제점과 해결 과정을 공유하려고 합니다. 이번 글은 갈만해 프로젝트의 후반부에 겪었던 서버 병목현상과 그 추적과정, 해결을 다루려합니다. 갈만해 프로젝트는 실시간…


외부 API 호출과 데이터 처리

August 25, 2024

갈만해 프로젝트를 소개합니다 갈만해 웹사이트 갈만해 Github Pasted image 20240912211252 '갈만해'라는 웹서비스를 운영하고 있습니다. 블로그에 웹 서비스를 개발하며 겪은 문제점과 해결 과정을 공유하려고 합니다. 이번 글은 갈만해 프로젝트의 초반부에 겪었던문제들과 그에 대한 제 나름대로의 해법을 담았습니다. 갈만해 프로젝트는 실시간…


분산시스템에서 데이터를 전달하는 방법

August 05, 2024

단일 DB 그리고 외부 API도 호출하지 않을 경우 데이터의 전달에 대해 크게 걱정할 필요가 없다. DBMS의 트랜잭션 기능을 사용하여 처리하면 되고 실패시 실패했다는 응답을 사용자에게 보내고 롤백하면 된다. 하지만 실제 웹서비스는 여러 개의 다른 DBMS를 사용하거나 다른 서비스와 네트워크로 연결되는 경우가 많다. 만약 결제 서비스에서 결제가 성공된…


인증과 인가

July 20, 2024

인증과 인가 인증 : 사용자의 신원을 확인하는 것 인가 : 신원이 확인된 사용자에게 접근 권한을 부여하는 것. Http는 비연결성, 무상태성을 가진다. 이전 요청을 기억하지 못하기 때문에 한 번 인증, 인가가 되었다고 해서 사용자의 세션(사용자의 이전 상태를 기억하는 지속된 연결 경험)이 마법처럼 유지되지 못한다. 이를 위해 다양한 방식으로 세션을 유지하…


GC와 자바의 변화과정

July 13, 2024

자바의 GC c,c++ 처럼 프로그래머가 직접 메모리를 관리하지 않는다는 것은 프로그래머에게 큰 장점이었음. c에서 malloc()을 한 메모리는 free()로 메모리 release가 되어야 함. 그렇지 않으면 메모리 누수(동적으로 할당한 메모리를 해제하지 않아 사용 가능 메모리가 줄어드는 현상)가 생김. Human Error를 일일히 잡았어야 함. 자바…


RDBMS와 NoSQL

July 03, 2024

데이터베이스 데이터베이스는 컴퓨터 시스템에 저장된 구조화된 정보의 집합을 의미합니다. 데이터베이스는 대개 DBMS(Database Management System)이라는 소프트웨어에 의해 관리되며 이 둘을 합쳐 일반적으로 데이터베이스라고 부릅니다. 현재 가장 많이 쓰이는 데이터베이스는 RDBMS(Relational Database Management Sy…


쓰레드와 톰캣 멀티 쓰레드 처리

June 28, 2024

스레드 프로세스는 스스로 실행가능한 메모리를 가진 실행단위입니다. 쓰레드는 경량 프로세스라고도 불리며 프로세스 내의 일부분의 메모리를 공유하며 스택, 레지스터를 따로 가집니다. 쓰레드는 프로세스내의 메모리를 공유한다는 점 때문에 큰 장점을 가지지만 사용에 주의를 기울여야 합니다. Context Switching 로 문맥이 교환될 시 프로세스 A의 cont…


바이트코드와 함께 알아 보는 자바 실행과정

June 17, 2024

(Java8 이전 버전에 대한 설명입니다) 이 코드, 어떻게 실행될까? Cat을 만들고 각 객체의 메서드를 실행하는 아주 단순한 코드입니다. 해당 코드가 대체? 어떻게? 실행되는지에 대해 정리해보고 싶었습니다. javac HelloJVM.java로 .class파일을 만든다. 자바 기초책을 보면 항상 javac로 컴파일하는 과정을 거쳐야 하는데요, 왜 j…


스레드테스트와 트랜잭션 전파

May 20, 2024

학습예제 코드 글에서 실습을 진행한 레포지토리입니다. 문제 상황 현재 진행하고 있는 프로젝트에서 예매시 동시에 사용자가 같은 좌석을 선택하는 상황을 테스트하기 위해 멀티스레드를 생성하는 테스트를 작성하게 되었습니다. 이 때 데이터 롤백을 위해 @Transactional을 사용했을 때 테스트 데이터가 삽입되지 않는 문제를 발견하게 되었습니다. 처음에는 …


Actuator, Prometheus, Grafana로 모니터링 환경을 구축해보자

May 13, 2024

학습계기 운영중 서버의 상태와 비정상 수치를 추적하고 이를 시각화하여 팀원과 공유할 필요성을 인지하게 되어 모니터링 시스템을 구축하게 되었습니다. 이 중 Spring Boot 프로젝트와 쉽게 연동할 수 있고, 레퍼런스가 많고 무엇보다 인 Actuator-Prometheus-Grafana를 선택하게 되었습니다. 모니터링 과정 Pasted image 2024…