개발일기
-
n-way-handshake는 왜 알아야 할까? 오늘은 왜 tcp 혹은 n-way-handshake에 대해서 공부해야 할까? 라는 의문점이 생겨서 여러 자료들을 취합해 보며 나름대로 공부하고 정리하게 되었다. handshake란 connection을 만들기 위한 절차를 말한다. 사실 여기서 connection이란 말부터 모호하다. 그냥 연결이라고 하자기에는 감이 잘 오지 않는다. TCP에 대해 정의한 RFC 793에 따르는 Connection의 정의는 다음과 같다. Connections: The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain status infor..
n-way-handshake는 왜 알아야 할까? / 기술적 겸손함n-way-handshake는 왜 알아야 할까? 오늘은 왜 tcp 혹은 n-way-handshake에 대해서 공부해야 할까? 라는 의문점이 생겨서 여러 자료들을 취합해 보며 나름대로 공부하고 정리하게 되었다. handshake란 connection을 만들기 위한 절차를 말한다. 사실 여기서 connection이란 말부터 모호하다. 그냥 연결이라고 하자기에는 감이 잘 오지 않는다. TCP에 대해 정의한 RFC 793에 따르는 Connection의 정의는 다음과 같다. Connections: The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain status infor..
2023.08.31 -
이 내용은 인프런의 "리눅스 성능 분석 시작하기"의 일부임을 미리 밝힙니다. 저 같은 경우에는 docker에 ubuntu 환경을 띄워 환경을 구성했습니다. 만약 따라하실 분의 경우 docker run할 때 `--privileged` 옵션을 주어야 dmesg 내용을 확인할 수 있습니다. uptime Linux에서 uptime 명령어로 load average를 파악할 수 있다. load average란 서버가 받고 있는 부하 평균을 의미한다. 예를 들어 1이라면 그 시간동안 작업이 할당된 프로세스 수를 말한다. 즉, 이 값이 CPU 수보다 높다면 CPU는 자기가 가능한 정도 이상의 일을 하고 있는 것이고 그만큼의 지연이 발생하게 된다. load average는 상대적인 수치이다. CPU 개수당 부하를 의미하..
load average를 파악하는 uptime과 커널 메시지를 출력하는 dmesg이 내용은 인프런의 "리눅스 성능 분석 시작하기"의 일부임을 미리 밝힙니다. 저 같은 경우에는 docker에 ubuntu 환경을 띄워 환경을 구성했습니다. 만약 따라하실 분의 경우 docker run할 때 `--privileged` 옵션을 주어야 dmesg 내용을 확인할 수 있습니다. uptime Linux에서 uptime 명령어로 load average를 파악할 수 있다. load average란 서버가 받고 있는 부하 평균을 의미한다. 예를 들어 1이라면 그 시간동안 작업이 할당된 프로세스 수를 말한다. 즉, 이 값이 CPU 수보다 높다면 CPU는 자기가 가능한 정도 이상의 일을 하고 있는 것이고 그만큼의 지연이 발생하게 된다. load average는 상대적인 수치이다. CPU 개수당 부하를 의미하..
2023.08.26 -
파일 시스템 파일 파일(File)이란 관련된 정보가 모여있는 단위라고 할 수 있다. 파일은 보조기억 장치에 저장되고, OS의 파일 시스템(File System)에 의해 관리된다. 기본적으로 애플리케이션은 파일을 직접 다룰 수 없다. 따라서 OS에 System Call로 요청해야 한다. 파일 생성 / 삭제 / 열기 / 닫기 / 읽기 / 쓰기 syscall들이 존재한다. 파일 시스템은 OS 내부 프로그램이며, 파일 별로 메타데이터를 관리한다. 메타데이터에는 파일 유형(확장자), 크기, 보호, 생성 날짜, 마지막 접근 날짜, 생성자, 소유자, 경로 등이 있다 디렉터리는 내부에 담겨 있는 대상과 관련된 정보를 관리하는 파일이다. 트리 구조로 관리한다. 최상단을 루트 디렉터리라고 부른다. Windows에선 폴더라..
파일 시스템파일 시스템 파일 파일(File)이란 관련된 정보가 모여있는 단위라고 할 수 있다. 파일은 보조기억 장치에 저장되고, OS의 파일 시스템(File System)에 의해 관리된다. 기본적으로 애플리케이션은 파일을 직접 다룰 수 없다. 따라서 OS에 System Call로 요청해야 한다. 파일 생성 / 삭제 / 열기 / 닫기 / 읽기 / 쓰기 syscall들이 존재한다. 파일 시스템은 OS 내부 프로그램이며, 파일 별로 메타데이터를 관리한다. 메타데이터에는 파일 유형(확장자), 크기, 보호, 생성 날짜, 마지막 접근 날짜, 생성자, 소유자, 경로 등이 있다 디렉터리는 내부에 담겨 있는 대상과 관련된 정보를 관리하는 파일이다. 트리 구조로 관리한다. 최상단을 루트 디렉터리라고 부른다. Windows에선 폴더라..
2023.08.25 -
Kotlin에서 RestAssured 사용하기 이번에 토이 프로젝트를 하면서 Kotlin + RestAssured 조합을 처음 다뤄보게 되었다. RestAssured를 사용하며 인수테스트를 작성할 때, 망규님이 작성하신 양식을 조금 변형해서 사용하고 있었는데, 이번에 Kotlin에서 사용하려다가 문제를 겪어서 그 이야기를 해볼까 한다 참조 : https://mangkyu.tistory.com/264 톰캣을 실제로 띄우는 RestAssured 환경에서는 스프링 컨테이너와 서블릿 컨테이너(톰캣) 다른 쓰레드에서 실행되기 때문에 @Transactional의 롤백이 동작하지 않는다. 따라서 테스트 메서드 마다 테이블의 레코드들을 모두 정리하는 쿼리를 날려서 해결하는데, 이를 @AcceptanceTest 라는 애..
Kotlin에서 RestAssured 사용하기Kotlin에서 RestAssured 사용하기 이번에 토이 프로젝트를 하면서 Kotlin + RestAssured 조합을 처음 다뤄보게 되었다. RestAssured를 사용하며 인수테스트를 작성할 때, 망규님이 작성하신 양식을 조금 변형해서 사용하고 있었는데, 이번에 Kotlin에서 사용하려다가 문제를 겪어서 그 이야기를 해볼까 한다 참조 : https://mangkyu.tistory.com/264 톰캣을 실제로 띄우는 RestAssured 환경에서는 스프링 컨테이너와 서블릿 컨테이너(톰캣) 다른 쓰레드에서 실행되기 때문에 @Transactional의 롤백이 동작하지 않는다. 따라서 테스트 메서드 마다 테이블의 레코드들을 모두 정리하는 쿼리를 날려서 해결하는데, 이를 @AcceptanceTest 라는 애..
2023.08.24 -
계획 오늘은 내내 놀았기 때문에 계획은 패스합니다 ^^;; 학습한 내용 가상 메모리 OS의 메모리 관리에 따라 프로그램 실행 양상과 컴퓨터 전체 성능이 좌우되기 때문에 중요한 영역이다. OS에서 메모리를 관리할 때는 프로세스들을 메모리에 일렬로 할당할 수도 있고(연속 메모리 할당), 프로세스를 잘게 쪼개어 저장할 수도 있다(가상 메모리). 연속 메모리 할당 연속 메모리 할당이란, 메모리에 프로세스들을 연속적으로 할당하는 걸 의미한다. 이때, 모든 프로세스를 메모리에 올린다면 메모리 공간이 부족하기 때문에 사용하지 않는 프로세스(ex. IO 작업을 기다리는 프로세스)는 임시로 Disk로 옮겨서 관리한다. 그렇게 해서 빈 공간에 새로운 프로세스를 할당하는 방식을 Swapping이라고 부른다. Swap Sap..
가상 메모리계획 오늘은 내내 놀았기 때문에 계획은 패스합니다 ^^;; 학습한 내용 가상 메모리 OS의 메모리 관리에 따라 프로그램 실행 양상과 컴퓨터 전체 성능이 좌우되기 때문에 중요한 영역이다. OS에서 메모리를 관리할 때는 프로세스들을 메모리에 일렬로 할당할 수도 있고(연속 메모리 할당), 프로세스를 잘게 쪼개어 저장할 수도 있다(가상 메모리). 연속 메모리 할당 연속 메모리 할당이란, 메모리에 프로세스들을 연속적으로 할당하는 걸 의미한다. 이때, 모든 프로세스를 메모리에 올린다면 메모리 공간이 부족하기 때문에 사용하지 않는 프로세스(ex. IO 작업을 기다리는 프로세스)는 임시로 Disk로 옮겨서 관리한다. 그렇게 해서 빈 공간에 새로운 프로세스를 할당하는 방식을 Swapping이라고 부른다. Swap Sap..
2023.08.23 -
계획 학습한 내용 스케줄링과 동기화 스케줄링 프로세스 관리 서비스 중 가장 중요한 2가지는 스케줄링과 동기화라고 할 수 있다. 오늘은 여기에 대해 공부해 보았다. 스케줄링이 중요한 이유는 프로세스 유형에 따라 프로세스를 수행해야 리소스를 더 효율적으로 사용할 수 있게 되기 때문이다. 예를 들어, IO bound가 높은 process와 CPU bound가 높은 process가 있다면, 당연히 IO bound가 높은 process를 먼저 실행하는 편이 더 효율적일 것이다. CPU를 얼마 사용하지 않고 요청만 한 뒤 WAITING 상태로 전이하기 때문이다. 따라서 IO bound process의 경우 CPU bound process보다 우선순위를 높게 주는 편이 더 효율적으로 스케줄링 할 수 있게 할 수 있다..
스케줄링과 동기화계획 학습한 내용 스케줄링과 동기화 스케줄링 프로세스 관리 서비스 중 가장 중요한 2가지는 스케줄링과 동기화라고 할 수 있다. 오늘은 여기에 대해 공부해 보았다. 스케줄링이 중요한 이유는 프로세스 유형에 따라 프로세스를 수행해야 리소스를 더 효율적으로 사용할 수 있게 되기 때문이다. 예를 들어, IO bound가 높은 process와 CPU bound가 높은 process가 있다면, 당연히 IO bound가 높은 process를 먼저 실행하는 편이 더 효율적일 것이다. CPU를 얼마 사용하지 않고 요청만 한 뒤 WAITING 상태로 전이하기 때문이다. 따라서 IO bound process의 경우 CPU bound process보다 우선순위를 높게 주는 편이 더 효율적으로 스케줄링 할 수 있게 할 수 있다..
2023.08.20