본문 바로가기

computer science

(5)
Cookie & Storage, 뭘 사용해야 할까? cookie, storage, session, session cookie, web storage, local storage.. 웹 클라이언트의 저장 공간을 이야기할 때 자주 혼용해서 사용하는 단어들이다. 최근에 지인과 cookie 관련된 내용을 이야기하였는데 알고 있다고 생각했지만 설명하려고 하니 잘 알고 있지 못하고 있다는 것을 깨달아 다시 한 번 정리해보기로 했다.웹 클라이언트에서 데이터를 저장하기 위해 사용하고 있는 공간은 크게 Cookie와 Web Storage 2개로 나뉜다. 만료 시점에 따라서 각 저장 공간은 다시 2가지로 나뉜다. Cookie는 session cookies/persistent cookies로 나뉘고, Web Storage는 session storage/local storag..
비밀번호는 왜 해시 함수를 이용해 암호화를 할까?(feat. 디피 헬만 키 교환) 개요 어떤 사이트에 접속해서 아이디와 패스워드를 입력해 가입을 한 뒤 로그인을 한다고 가정해보자. 아이디와 비밀번호라는 개인정보가 모두 공개되지 않으면 좋겠지만, 아이디는 비교적 공개되어도 되는 데이터에 가깝다. 하지만 비밀번호는 절대 공개되어선 안되는 데이터다. 심지어 웹사이트를 관리하는 관리자조차도 비밀번호를 함부로 알아선 안된다. 그렇지만 사용자가 로그인을 하기 위해선 회원가입 시에 입력한 비밀번호의 값을 서버 저장소에 보관한 뒤, 로그인 시에 입력하는 비밀번호가 저장된 비밀번호와 일치하는지 확인하는 작업이 필요하다. 보통 비밀번호는 평문 자체를 저장하지 않고 암호화한 임의의 값을 저장한다. 여기에서 핵심은 다음과 같다. 데이터를 한방향으로만 흐르게 해야 한다. 임의의 값으로 암호화하는 작업은..
File Descriptor 제한 테스트(feat. ulimit, JMeter, VisualVM) 이전 글 테스팅 툴 - JMeter와 모니터링 툴 - VisualVM에서 어플리케이션을 테스트하고 어플리케이션이 사용하고 있는 자원을 모니터링하였다. JMeter 문서에 나오는 best practices에서 정확한 테스트를 위해 thread 수를 적절히 설정해야 할 필요가 있다고 나와 있었는데, 당시에는 그러면 얼마만큼의 thread 수가 적절한가? 하는 의문이 들었다. File Descriptor, ulimit을 공부하며 어떤 영향이 있는지 알 수 있는 테스트를 할 수 있었다. 이번 글은 그 테스트에 대한 글이다. Spring Boot Application Server SlowController를 하나 만들어 각 루트 요청이 Thread를 5초간 sleep 하도록 만들었다. @RestController..
File Descriptor란? "하나의 서버 컴퓨터가 요청을 몇 개나 맺을 수 있을까요?" 답변을 하지 못했다. 아마 성능이 매우 좋은 cpu, ram, disk를 쓰면 요청을 많이 맺을 수 있지 않을까 생각했다. 물론 하드웨어적인 요소들이 서버가 맺을 수 있는 요청의 수에 영향을 주겠지만, Unix-like OS 관점에서 볼 때 모든 요청이 파일로 관리되기 때문에 '파일을 얼마나 생성해낼 수 있는가?'가 하나의 지표로 활용될 수 있을 것이다. 여기서 요청이라 하면 sockets, network I/O, disk I/O 등 다양한 인터페이스를 가리킨다. 소켓을 열거나 네트워크 연결을 수립할 때, 파일을 열거나 디스크 장치에 접근할 때도 file descriptor가 생성된다. 현재 사용하고 있는 노트북이 macOS이므로 file de..
Timeout이란? - Connection Timeout / Read Timeout 타임아웃이란? timeout은 특정 이벤트를 완료하는 데 할당된 제한 시간입니다. 이 제한 시간 안에 특정 이벤트가 완료되지 않으면 보통 'timed out' 되었다고 말합니다. 즉, timeout은 '제한시간' 그 자체를 나타내고, timed out은 제한 시간 내에 완료되지 못한 상태에 가깝습니다. 따라서 개발을 할 때 보통 timeout을 세팅하고, 그 시간 내에 처리되지 못하면(timed out) 어떤 조치를 취할 것인가를 구현하는 것이 일반적입니다. 이 때, 위에서 말한 특정 이벤트란 다음과 같이 network layer, application layer 두가지 계층으로 나누어 볼 수 있습니다. Network layer 서버 간 TCP/IP 통신은 먼저 connection을 수립하고 이루어집니다..