우아한테크코스 레벨 4 미션을 진행하면서 Tomcat에 대한 학습을 진행하고 있습니다. 이 과정에서 accept count, max connection, max threads라는 키워드에 대해 알게 되었는데, 이번 아티클에서 개념과 사용법을 정리하고자 합니다. 들어가면서 max threads, accept count, max connection은 모두 HTTP 관련 Tomcat 속성입니다. 조금 더 디테일하게는 Tomcat의 여러 구성요소 중 HTTP Connector에 대한 속성입니다. 따라서 이런 속성 값들을 바꾸는 것은 HTTP Connector를 튜닝하는 것과 동일하다고 할 수 있겠습니다. HTTP Connector는 특정 포트에서 HTTP 1.1 연결을 수신하는 역할을 합니다. maxThread..
매번 협업 프로젝트를 진행할 때마다 마주치는 빈번한 문제 중 하나는 CORS입니다. 이번 협업 프로젝트를 진행하면서도 CORS 문제를 다룰 일이 생겼고, 한 번은 제대로 짚고 넘어가면 좋을 것 같아 이번 아티클을 통해 정리해 보도록 하겠습니다. OriginSOP(Same Origin Policy)와 CORS(Cross Origin Resource Sharing)에 대해 알아보기에 앞서, 두 개념에서 공통적으로 사용되는 개념인 Origin에 대해 알아보도록 하겠습니다. Web content's origin is defined by the scheme (protocol), hostname (domain), and port of the URL used to access it. Two objects have t..
JWT(Json Web Token)이란? JWT는 RFC 7519 에 등록된 표준으로서, JSON 포맷의 정보를 간결하게 전송할 수 있는 하나의 기술입니다. 사실 JWT라는 것은 추상적인 인터페이스의 역할이고 구현체는 두 가지로 분류되는데요. JWS(JSON Web Signature) - 서명 방식 JWE(JSON Web Encryption) - 암호화 방식 대부분의 경우 JWT를 JWS와 동일한 의미로 사용하므로 이번 아티클에서도 서명 방식(JWS)를 기준으로 설명하겠습니다. JWT는 서명(sign)이라는 개념을 사용해 데이터를 전송합니다. JWT를 처음 학습하시는 분들이라면 당연히 이 '서명'이라는 키워드가 낯설텐데, 쉽게 말해 데이터에 일련번호를 붙인다라고 생각하시면 될 것 같습니다. 이렇게 일련번..
무엇이 문제였을까? 로그인 기능을 구현하기 위해서는 어떠한 방법으로든 클라이언트를 식별할 수 있어야 합니다. 하지만 HTTP의 기본 원리를 그대로 따르면서 이를 구현하면 어려운 점이 많습니다. 무상태성을 완전하게 고려하면서 로그인 기능을 구성하려면 클라이언트는 매번 ID, PASSWORD를 보내주어야 할 것입니다. 이런 서비스를 사용하는 클라이언트는 매번 로그인을 해야할 것이구요. 그렇다면 쿠키에 ID, PASSWORD를 넣어두고 요청을 보내는 방식은 어떨까요? 사용자는 확실히 매번 요청을 할 필요도 없어보이고, 로그인 기능을 쉽게 구현할 수 있을 것 같아보입니다. 쿠키는 기본적으로 매 요청마다 같이 전송되니까요. 하지만 이 방식도 문제가 있습니다. 대표적인 문제점은 다음과 같습니다. 보안 위협: 요청에..
HTML5를 기준으로 브라우저 저장소의 종류는 크게 두 종류로 나뉘는데요, 쿠키 웹 스토리지(로컬 스토리지, 세션 스토리지) 이 두 저장소에 대해 알아보는 시간을 갖겠습니다. 쿠키 쿠키가 등장한 이유 HTTP의 특징 중 하나는 무상태성입니다. 즉, 서버는 클라이언트에 대한 어떤 가정도 하지 않는다는 것을 의미합니다. 하지만 이런 무상태성이 단점으로 작용하는 때가 존재하는데요, 인증 기능이 포함된 서버와 통신을 한다고 가정해보겠습니다. 완전한 무상태성을 유지하기 위해선, 위와 같은 통신 절차를 따르게 됩니다. 즉, 클라이언트는 필요한 모든 정보를 보내야 하기 때문에 매번 동일한 인증 절차를 거쳐야합니다. 이런 방식은 번거롭다고 느껴지지 않나요? 따라서 이런 HTTP의 무상태성을 통해 발생하는 문제점을 보완..