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

스프링 부트 애플리케이션에 대규모 요청이 몰리게 되면 어떻게 될까?스프링 부트를 사용하지만, 앞단에서 요청이 어떻게 처리되는지 모르고 있었다. 스프링 부트에 대규모 요청이 몰리게 되면 어떻게 될까? 그런 물음을 받았을 때 내가 납득할 수 있는 대답을 낼 수 없었다. 일단 요청마다 다른 스레드가 처리한다는 건 알겠는데, 요청마다 새로운 스레드가 만들어지는지, 그렇다면 최대 몇 개까지 생성될 수 있는지, 또 처리할 수 없는 요청은 어떻게 되는지 의문이 생겼다.이번 글에서는 스프링 부트의 임베디드 톰캣과 관련된 설정을 정리하였다.관련 설정 요소커넥션 (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시까지 ..

본 게시글은 CS 지식 스터디에서 HTTP에 관해 발표하기 위해 'HTTP 완벽 가이드(인사이트)'의 1장 ~ 3장 내용을 요약한 게시물입니다.1. HTTP 개관HTTP(Hypertext Transfer Protocol)은 WWW(Word Wide Web)에서 통신하는 데 사용하는 프로토콜 프로그램이다.1.1 HTTPHTTP는 JPEG 이미지, HTML 페이지, 텍스트 파일, MPEG 동영상 등 파일을 웹 서버로부터 빠르고, 정확하게 웹 브라우저로 옮겨준다.신뢰성 있는 데이터 전송 프로토콜(TCP)를 사용하기 때문에, 데이터가 지구 반대편에서 오더라도 전송 중 손상되거나 꼬이지 않음을 보장한다.(덕분에 웹 개발자도 전송 중 파일이 파괴되거나 왜곡되는 걸 걱정할 필요없다.)더보기HTTP/3 에서 변경사항2..

MariaDB와 Hibernate(JPA)를 활용하여 프로젝트를 진행하며 데이터베이스 쿼리 성능 최적화와 관련된 작업을 정리하였습니다. 이 내용은 개인 기록용으로 작성되었습니다.인덱스(Index)23년 여름, 동아리 홈페이지를 개발하면서 서버 개발을 담당했습니다. 데이터베이스로는 관계형 DB인 MariaDB를 사용하였습니다.홈페이지에는 커뮤니티(게시판) 기능이 존재하며, 위 사진과 같이 기본적인 게시판 형태를 가지고 있습니다. 기본적인 제목, 본문 외에도 첨부파일 업로드, 댓글, 좋아요/싫어요 기능을 구현하였습니다.커뮤니티 기능과 관련된 테이블 구조는 위와 같습니다. 다른 필드가 여러 개 존재하지만, 간단히 핵심적인 부분만 표시했습니다.인덱스 설계 및 생성얼마 지나지 않은 코드지만, 다시 보면 부족한 점..