목록분류 전체보기 (44)
장난감 연구소

데이터베이스 트랜잭션에 동시성 처리를 맡기면서, 데이터베이스가 없는 상황에서의 동기화 문제를 간과하고 있었습니다. 이를 계기로 운영체제 책과 인터넷 글들을 다시 읽으며, Java에서의 동기화 기법에 대해 내용을 정리해보았습니다. synchronized (Java Monitor)Java에서 동기화(Synchronization)는 공유 자원이나 임계 영역에, 한번에 하나의 스레드만 접근할 수 있도록 보장하여, 데이터 손상과 불일치를 예방한다.Java는 스레드 동기화를 위한 모니터(Monitor) 기법을 제공한다. 모니터는 락과 조건 변수를 함께 관리하여, 스레드 간 상호 배제를 보장하고 안전한 동기화를 지원하는 고수준 동기화 구조이다.두 가지 방식으로 synchronized 키워드를 사용하여 동기화를 구현할..

이번 글에서는 기존에 CRA(Create React App)를 사용하던 리액트 프로젝트를 Vite로 마이그레이션하면서 진행한 작업들을 개인적으로 정리해보았습니다.타입스크립트 관련 설정 등 제가 사용하지 않은 내용은 포함되어 있지 않으니, 해당 주제가 필요하신 분은 다른 참고 자료를 함께 보시는 것을 추천드립니다. Create React App is deprecated한동안 백엔드 관련 기술에 집중하느라 프론트엔드에 소홀했었는데, 어느새 Create React App(CRA)이 공식적으로 Depreceted 되었다. CRA는 리액트 빌드 도구로, 2025년 2월 14일부터 더 이상 권장되지 않는다.그 이유로는, Webpack 기반의 빌드 속도가 느리고, 라우팅/코드 스플리팅처럼 앱 개발에 필수적인 기능이 ..

스프링 부트 애플리케이션에 대규모 요청이 몰리게 되면 어떻게 될까?스프링 부트를 사용하지만, 앞단에서 요청이 어떻게 처리되는지 모르고 있었다. 스프링 부트에 대규모 요청이 몰리게 되면 어떻게 될까? 그런 물음을 받았을 때 내가 납득할 수 있는 대답을 낼 수 없었다. 일단 요청마다 다른 스레드가 처리한다는 건 알겠는데, 요청마다 새로운 스레드가 만들어지는지, 그렇다면 최대 몇 개까지 생성될 수 있는지, 또 처리할 수 없는 요청은 어떻게 되는지 의문이 생겼다.이번 글에서는 스프링 부트의 임베디드 톰캣과 관련된 설정을 정리하였다.관련 설정 요소커넥션 (Connections)HTTP 통신은 TCP 연결 위에서 이뤄진다. 클라이언트가 요청을 보내면 톰캣은 소켓을 열어 해당 연결을 유지한다. 이와 관련된 설정이 가..

본 게시글은 CS 지식 스터디에서 HTTP에 관해 발표하기 위해 'HTTP 완벽 가이드(인사이트)'의 4장 내용을 요약한 게시물입니다.학습 목표HTTP는 어떻게 TCP 커넥션을 사용하는가TCP 커넥션의 지연, 병목, 막힘병렬 커넥션, keep-alive 커넥션, 커넥션 파이프라인을 통한 HTTP 최적화TCP 커넥션HTTP 통신은 TCP/IP 프로토콜을 통해 이루어진다.TCPHTTP 커넥션은 몇몇 사용 규칙을 제외하고는 TCP 커넥션에 불과하다.TCP 커넥션은 인터넷을 안정적으로 연결해주는 신뢰할 수 있는 통신 방식을 제공한다. HTTP가 메시지를 전송하고자 할 경우 현재 연결된 TCP 커넥션을 통해 메시지 내용을 순서대로 보낸다.TCP는 세그먼트 단위로 데이터를 잘게 나누고, IP 패킷에 담아 전달한다...

본 게시글은 CS 지식 스터디에서 컨테이너 기술에 대해 발표하기 위해 정리한 내용입니다.기본 개념컨테이너란 무엇인가? 샌드박스화된 런타임 환경애플리케이션과 파일/런타임 등 실행 환경을 같이 패키징한 것애플리케이션 소프트웨어를 운영체제로부터 분리시켜 사용자에게 애플리케이션이 동작할 때 필요한 최소한의 실행 환경을 제공하는 것가상화 기술과 더불어 컨테이너 기술은 클라우드 컴퓨팅 서비스의 핵심으로 부각되고 있다.컨테이너로 패키징된 애플리케이션은 자신이 동작할 수 있는 환경을 포함하고 있기 때문에 쉽게 배포가 가능해진다. 장점이식성 : 컨테이너가 모든 종속성을 포함하여 어디서든 동일한 환경에서 실행 가능경량성 : VM(가상머신)보다 적은 리소스로 실행되며, OS를 공유하여 성능이 뛰어남빠른 배포와 롤백 : 이미..

본 게시글은 CS 지식 스터디에서 가상화 기술에 대해 발표하기 위해 정리한 내용입니다.컴퓨팅 자원의 효율적 활용컴퓨팅 자원의 활용성가상화 기술에 대해 얘기하기 전에 가상화 기술이 왜 필요한지 알아보자.💡 컴퓨터 1대가 주어진다면 무엇을 할 것인가? 컴퓨터 1대 주어진다면 인터넷 서핑을 하거나, 문서 작성, 게임, 소프트웨어 개발 등 무엇을 할 지 쉽게 답할 수 있을 것이다.💡컴퓨터 1,000대가 주어진다면 무엇을 할 것인가? 그러나 1,000대가 주어진다면 무엇을 할 수 있을지 쉽게 답하기 어려울 것이다. 이러한 컴퓨팅 자원을 어떻게 효율적으로 사용할 수 있을까?특정 시간 동안 사용되지 않는 컴퓨팅 자원의 활용내가 소유한 컴퓨터가 풀로 가동되고 있고, 내 친구의 컴퓨터는 오후 6시부터 오전 9시까지 ..