프로세스 스케줄러(Process Scheduler)는 OS의 핵심 기능으로서 동시에 실행되는 프로세스의 실행순서와 우선순위를 관리하는 역할을 한다. 조금 더 자세히 말하자면 여러 프로세스가 시스템의 리소스에 접근할 때 필연적으로 경쟁상태에 놓이게 되는데, 프로세스 스케줄러는 이 경쟁상태를 적절히 조율해서 리소스의 사용 효율성과 짧은 응답시간, 처리량과 처리율 등을 극대화시키기 위해 다양한 알고리즘을 이용해 프로세스의 스케줄을 관리한다. 이와 같은 프로세스 스케줄링 알고리즘은 크게 아래의 두 가지로 나뉘며, 선점형 스케줄링 특정 프로세스가 CPU를 점유하고 있더라도 우선순위가 높은 다른 프로세스가 실행되면 강제로 기존 프로세스를 중단시키고 새로운 프로세스를 실행시키는 방식이다. 우선순위 기반, 라운드 로빈..
목차 출처: https://bpicolor.com/raster-vs-vector-images-the-important-differences/ 래스터 이미지와 벡터 이미지는 둘 다 이미지를 표현하는 방식이다. 사용하며 몸으로는 느꼈지만, 생각난 김에 둘의 차이를 제대로 정리하고 가기. Raster Image 래스터 이미지는 정사각형의 픽셀로 이루어진 이미지이다. 일반적으로 각 픽셀의 위치와 색상정보를 함께 담은 맵, 혹은 배열로 표현할 수 있으며, 비트(Bit)로 이루어진 지도(Map of Bits)라는 의미에서 비트맵(Bitmap), 혹은 픽스맵(Pixmap)이라고 불리기도 한다. 여기서 비트는 정해진 크기의 정사각형이기 때문에 이미지를 확대하면 픽셀의 크기가 커지며 일종의 깨짐 현상이 발생한다. 예를 ..
목차 XSS, CSRF, SQL Injection은 웹 보안에서 가장 많이 발생하는 취약점들이다. 말을 바꾸면 좋지 않은 의도를 가진 사람이 해당 서비스나 서비스를 이용하는 사용자를 공격하는 방법들인데, 이 글에선 하나씩 개괄적으로 보고 그 방지책에 대해 알아본다. XSS(Cross-Site Scripting) XSS는 악성 스크립트를 삽입하여 해당 페이지를 요청하는 사용자의 브라우저에서 실행되도록 하는 방식이다. 이 공격은 주로 사용자의 개인정보가 담긴 쿠키나 세션을 하이재킹해 권한을 탈취하는 것을 목적으로 한다. 최악의 경우 탈취한 권한으로 사용자의 계좌에서 돈을 인출하는 상황도 발생할 수 있기 때문에, XSS는 최악의 보안 위협으로 간주되고 있다. 이를 방지하기 위해서는 입/출력 값의 스크립트 태그..
현재 진행 중인 프로젝트를 개발하면서, 젠킨스와 도커를 이용한 CI/CD를 구성해 보기로 했다. 항상 말하듯 자동배포는 설정이 90% 이상이라서 구성하는데 시간이 조금 걸리긴 했지만, 일단은 성공. 이 글에서는 개괄적인 파이프라인에 대해 알아보고 시간이 날 때마다 틈틈이 세부사항을 올려봐야겠다. 먼저 해당 파이프라인을 그림으로 그리면 아래와 같다. 오른쪽에 그려진 프론트엔드 부분을 제외하고, EC2에 서버가 자동배포 되기까지의 파이프라인을 요약한다. 그림에 그려진 두 개의 EC2 중 왼쪽을 젠킨스EC2, 오른쪽을 배포EC2라고 부른다. 코드 작성 및 변경사항 (GitHub에) 푸시. 이때 젠킨스EC2에서 실행 중인 젠킨스가 깃허브 웹훅을 이용해 변경사항을 감지하고 변경된 코드를 가져오는 것으로 파이프라인..
목차 객체 지향 프로그래밍과 함수형 프로그래밍은 둘 다 프로그래밍 패러다임의 한 종류이며, 여기서 패러다임이란 단순히 말하자면 프로그래밍을 무엇으로 정의할 것인가에 대한 관점이라고 정리할 수 있다. 이런 맥락에서, 본격적으로 두 패러다임에 관해 정리하기 전에 근본적인 차이를 말하자면 객체 지향 프로그래밍은 "프로그래밍은 상호작용하는 객체의 집합이다."라는 관점을 가진 패러다임이며 함수형 프로그래밍은 "프로그래밍은 연속된 함수의 집합이다."라는 관점을 가진 패러다임이라 정리할 수 있다. 추가로 객체 지향 프로그래밍은 일반적으로 명령형 프로그래밍으로, 함수형 프로그래밍은 일반적으로 선언형 프로그래밍으로 작성한다는 차이도 있다. 여기서 명령형/선언형 프로그래밍 역시 프로그래밍 패러다임의 한 종류이며, 대략 아..
목차 한동안 WebFlux로 개발을 하면서 제목에 쓰인 것들에 대해 몸으로 배울 수 있었다. 그러나 여전히 막연한 부분이 있고, 비동기와 논블로킹이 헷갈릴 때도 있어서 오랜만에 최대한 간결하게 핵심만 정리하고 넘어가기. Synchronous execution, Asynchronous 요약부터 하고 들어가자면, 둘의 차이는 결괏값 리턴 순서가 요청 순서를 지키느냐(동기) 아니냐(비동기) 하는 것이다. 조금 덜 직관적으로 말하자면 둘의 차이는 호출된 요청의 결과를 어느 쪽에서 처리하느냐 하는 데 있다고 볼 수도 있다. 결과는 당연히 호출한 쪽에서 신경 써야 하는 거 아닌가? 싶지만 아니다. 위 그림을 보면 알 수 있듯이, 동기 처리의 경우 B메서드를 호출한 A가 작업 완료 여부를 처리한다. 따라서 여러 작업..
목차 Program, Process, Thread 프로그램, 프로세스, 그리고 스레드는 모두 컴퓨터에서 실행되는 코드를 가리킨다. 하지만 당연하게도 중요한 차이점들이 있는데, 짧게 정리하면 아래와 같다. 프로그램 프로그램은 실행 가능한 코드와 데이터의 집합이다. 실행 파일이나 라이브러리 형태로 디스크에 저장되며 실행되기 전에 디스크에서 메모리로 로드되는데, 이를 '프로그램 인스턴스'라고 한다. 프로세스 위에서 말한 '프로그램 인스턴스'가 바로 프로세스이다. 다시 한번 정리하자면 프로그램이 실행되어 운영체제에 의해 메모리상에 올라가면 이를 프로세스라 부른다. 따라서 운영체제로부터 자원을 할당받는 작업의 단위라 볼 수 있으며, 프로세스 사이에는 자원이 공유되지 않는다. 이 때문에 Context Switchi..
목차 https://ieeexplore.ieee.org/document/9359794 Does Domain-Driven Design Lead to Finding the Optimal Modularity of a Microservice? Information systems are moving into the cloud. The new requirements enforced by cloud standards are high availability, high scalability, and a reduced mean time to recovery. Due to these new requirements, information system architecture styles are also evo ieeexplor..
목차 Distributed Transaction 분산 트랜잭션은 여러 개의 컴퓨터, 혹은 노드, 서버에 걸쳐 실행되는 트랜잭션이다. 정의상 두 개의 컴퓨터 사이의 트랜잭션도 분산 트랜잭션이라 부를 수 있지만, 보통 분산 트랜잭션이라고 하면 대규모 분산 시스템 혹은 네트워크에서 이루어지는 것을 가리키며 트랜잭션과 마찬가지로 데이터 일관성과 안정성을 보장하기 위해 사용된다. 하지만 분산 시스템은 그 특유의 복잡성 때문에 ACID원칙을 전부 지키기는 어려운데, 이를 최대한 보장하기 위한 기술에 대해 몇 가지 정리하고 넘어가겠다. ACID Atomicity(원자성) 각 트랜잭션 작업은 원자성을 지녀야 한다. 이 말은 트랜잭션이 전부 성공하거나 전부 실패해야 함을 뜻한다. Consistency(일관성) 트랜잭션..
목차 분산 환경(Distributed Environment)은 여러 대의 컴퓨터와 네트워크를 연결해 작업을 분산하고, 결과는 하나로 모아 마치 하나의 시스템인 것처럼 보이도록 구성된 환경을 말한다. 이를 위해 분산된 컴퓨터, 서버, 혹은 노드(및 데이터베이스) 간의 정보 공유를 위한 통신이 반드시 필요한데 이 글에선 주로 MSA 관점에서 그 대표적인 방법들의 장단점에 대해 정리한다. 참고로 나열 순서는 지난번에 리뷰했던 논문에서 실무자들이 가장 많이 사용한다고 응답한 순서를 따른다. 2023.03.31 - [Development/Paper Review] - [MSA]뜬금 논문 리뷰 - j.jss.2022.111521 [MSA]뜬금 논문 리뷰 - j.jss.2022.111521 이것저것 찾아다니며 공부하는..
- Total
- Today
- Yesterday
- Python
- a6000
- BOJ
- 칼이사
- 남미
- 중남미
- 유럽여행
- 리스트
- 맛집
- java
- 면접 준비
- 세계일주
- 스트림
- 기술면접
- 파이썬
- 알고리즘
- RX100M5
- spring
- 스프링
- 동적계획법
- 백준
- 여행
- Backjoon
- Algorithm
- 세계여행
- 세모
- 지지
- 야경
- 자바
- 유럽
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |