학습일지(26)
-
RabbitMQ -1- AMQP 0-9-1 프로토콜
출처 : https://www.rabbitmq.com/tutorials/amqp-concepts.html#programmable-protocol Overview RabbitMQ는 AMQP 0-9-1 protocol을 기반으로 한 메시지 브로커이다. AMQP 0-9-1 and the AMQP Model? AMQP 0-9-1(Advanced Message Queuing Protocol)는 클라이언트 애플리케이션이 특정한 미들웨어 브로커와 메시지를 주고받게 하는 프로토콜을 이야기한다. 메세지 브로커는 Publisher (메시지 송신자 혹은 producer)가 보낸 메시지를 받고, 특정한 Consumer(메세지 수신자)에게 라우팅을 해주는 역할을 갖는다. AMQP가 네트워크 프로토콜이라는 점을 감안하면, pub..
2022.05.19 -
암호 알고리즘 -1- 개요
1. 암호 알고리즘의 종류 및 정의 1.1. 단방향 암호화 기법 한쪽 방향으로만 암호화 기법이며, **'해시 알고리즘'**라고도 부른다. 해시 알고리즘으로 변환된 값이나 키를 '해시값' 혹은 '해시 키'라고 부른다. 1.1.1 MDC(Modification Detection Code) 대표적으로 **SHA-1/SHA-2, MD5, HAVAL**등이 있다. 메세지 변경이 일어났는지 아닌지를 확인하는 기법. 데이터의 무결성을 판단한다. 해싱된 암호문으로부터 원본 메시지를 알 수 없어야 하고 메시지와 해시값은 1:1이 되어야 한다. **송신자:** 원본 메시지는 그대로 보내고, 암호화된 해시값은 안전한 채널로 보내게 되는데, 이때 외부로부터 변경이 되지 않는다는 보장이 되어야 한다. **수신자:** 수진자는 ..
2022.05.10 -
CI/CD에 대해 알아보자
CI (continuous integration) 소프트웨어가 항상 신뢰할 수 있는 레벨(테스트 통과 + 무난한 빌드)을 유지한 상태로 배포될 준비를 하자는 개념 CI process 코드 통합 동작 테스트 빌드 테스트 버그 발생 시 기록 CD(continuous deployment) 흔히, CD를 '무중단 배포'라고 한다. '무중단'이라는 단어 때문에 자칫 잘못하면, CD를 downtime이 없는 배포로 생각할 수도 있다(사실 이글을 쓴 내가 그렇게 받아 들였었다.). 하지만, CD의 Continuous는 '무중단' 보다는 '연속적인'의 의미로 받아들이는 것이 더 정확할 것 같다. 좀더 설명을 해보자면, 일반적으로 배포를 하기 위해, 다양한 환경을..
2022.02.06 -
모니터
모니터란? mutual exclusion을 보장하고, 조건에 따라 스레드를 wait 상태로 전환하게 해주는 하나의 동기화 기법이다. 모니터는 어떨 때 사용할 수 있을까? 모니터는 한 번에 하나의 스레드가 실행되어야 하며, 여러 스레드간의 협력이 필요할 때, 활용될 수 있다. 모니터의 구성요소 mutex 임계 영역에서 상호 배제(mutual exclusion)을 보장하는 장치 (자세한 내용은 [저번 게시글](https://postwithmemory.tistory.com/22?category=1067725)을 참고하라.) 따라서 임계영역에 진입하려면, mutex lock을 취득해야 한다. 여기서 락을 획득하지 못한 스레드는 일종의 큐에 들어가 대기(waiting) 상태로 전환한다. 이후에, 락을 가진 스레드..
2022.01.26 -
CAP 이론에 대해 알아보자
브루어(Brewer)의 이론 이라고도 하는데, 세 가지 조건을 모두 만족하는 분산 컴퓨터 시스템이 존재하지 않음을 증명한 이론이다. 여기서 세가지의 조건은 다음과 같다. 일관성(Consistency) 데이터를 저장하려고 하는 노드가 몇대가 되든, 모든 노드에서 동일한 저장되어야 한다는 의미의 속성이다. (관계형 데이터베이스의 ACID 속성의 C 역시 거의 동일한 의미를 가졌다.) 가용성(Availablilty) 모든 요청이 성공 혹은 실패 응답을 반환하여야 한다. 즉, 서버가 살아있다면, 클라이언트의 요청을 무조건 응답해야한다는 뜻이다. 분할 내구성(Partition tolerance) 메시지 전달이 실패하거나, 시스템의 일부가 망가져도 시스템이 계속 동작할 수 있어야 한다. 즉 클러스터 사이에 일부 접..
2022.01.23 -
멀티 프로세스/스레드 환경에서 동기화를 위한 여러 전략과 차이
동기화의 전략의 구체적인 동작 방식은 OS와 프로그래밍 언어에 따라 차이가 있을 수 있으니, 한번 개념을 정리했어도, 꼭 관련 문서를 통해 검토하는 습관을 가져야 한다. 동기화란? 여러 프로세스/스레드가 동시에 공유 데이터를 실행, 조작을 해도, 공유 데이터의 일관성을 유지하는 것. 동기화가 필요한 이유 여러 프로세스 혹은 스레드가 동시에 같은 데이터를 조작할 때, 각각의 타이밍, 순서에 따라 결과가 달라질 수 있는 상황(경쟁 조건 발생)이 발생하는데, 이 상황에서 공유 데이터의 일관성을 보장하기 위해선 하나의 프로세스/스레드만 진입해서 실행 가능한 영역(임계 영역)을 구분하고 통제해야할 필요가 있다. 즉, 요약하자면, 경쟁 조건 속에서 임계 영역을 구분하여 상호배제(mutual exclution)를 보..
2022.01.19