분류 전체보기
[CUDA] GPU에서 코드 돌리기
병렬 프로그래밍의 종류 : SIMD vs SPMD SIMD(Single Instruction Multiple Data), SPMD(Single Program Multiple Data)에서 알 수 있듯이 여러 데이터를 가지고 병렬로 수행하는 단위가 Instruction이냐 Data이냐 라는 차이가 존재한다. 우리가 Instruction이라는 말에서도 알 수 있듯이 SIMD는 쓰레드별 동기화가 반드시 필요하게 되고 이러한 동기화는 하드웨어의 지원으로 이뤄지게 된다. SPMD는 반면에 동기화에 대해 SIMD보다 느슨하게 이뤄지는 게 특징이다. GPU는 이 중에 SPMD에 해당하는 Machine이다. GPU의 여러 쓰레드는 같은 code를 실행하지만 다른 데이터를 가지고 code를 실행한다. GPU의 용어 1...
토스 CTO 강연 후기
강연 내용 토스 뱅크 조직 구성 토스 뱅크는 고객 중심을 위한 조직이다. 이 때문에 애자일 조직으로 조직을 구성하였다. 조직의 단위는 서비스이고 서비스에 관한 의사결정은 팀 내에서 이뤄진다. 토스 뱅크의 역사 전통적인 은행의 시스템의 보수적인 대응으로 인해 생기는 여러 문제를 해결하고자 뱅크를 만들게 되었다. 1. 은행 시스템의 최적화 문제 Integrity를 위한 Lock이 User단위로 이뤄지거나 서비스 처리를 한개의 채널로만 처리함으로써 성능이 떨어지는 문제가 은행에 존재 해당 문제에 대해서 은행에게 제안을 해보았지만 이들이 받아지지 않았음 2. 은행의 오류 전파 문제 기존의 토스가 은행과 연결되어 있는 구조에서 은행에서 발생하는 문제가 토스 전체로 전파되는 등의 문제가 있었다. 이를 위해 MSA를..
[보안] 암호(2) RC4
https://me-analyzingdata.tistory.com/entry/%EB%B3%B4%EC%95%88-%EC%95%94%ED%98%B81-Perfect-Secret%EA%B3%BC-OTP [보안] 암호(1) Perfect Secret과 OTP 암호학 분야에서 우리가 암호 알고리즘을 이야기 하기에 앞써 어떤 암호화 방식이 완벽한 비밀 유지가 가능한지를 이야기 해야한다. 따라서 이번 글에서는 Perfect Secret이란 무엇인지, OTP가 무엇 me-analyzingdata.tistory.com 앞썬 글에서 우리는 Perfect Secret과 OTP에 대해서 이야기 했고 이들이 구현하기에 매우 힘든 암호 알고리즘이라는 것을 알았다. 이를 보다 현실적으로 구현한 암호화 알고리즘인 RC4를 이야기해보..
[보안] 암호(1) Perfect Secret과 OTP
암호학 분야에서 우리가 암호 알고리즘을 이야기 하기에 앞써 어떤 암호화 방식이 완벽한 비밀 유지가 가능한지를 이야기 해야한다. 따라서 이번 글에서는 Perfect Secret이란 무엇인지, OTP가 무엇인지 알아보려고 한다. Threat Model 우리가 암호를 만들어서 통신을 할 때 이를 공격하는 유형은 크게 4가지로 나뉜다. 1. Cipher-text only attack 공격자가 가지고 있는 정보는 암호 뿐이고 이를 바탕으로 Brute force attack으로 공격하는 방식을 의미한다. 2. Know-plaintext attack 공격자가 무작위의 plaintext에 대해서 이에 대한 ciphertext를 가지고 있고 이를 바탕으로 pattern을 유추하거나 brute-force로 공격을 하는 것..
[보안] 디피-헬먼 키 교환 1편
Introduction 우리가 통신을 할 때 패킷은 누가 보지않게 암호화 시켜야한다. 이러한 암호화 방식을 위해 key라는 것이 존재하고 이러한 key를 이용해서 암복호화등을 진행하게 된다. 여기서 내가 예전부터 궁금해했던 부분은 키는 어떻게 암호화해서 교환하는 걸까? 라는 질문이다. 이러한 키교환에 사용되는 유명한 키 교환 알고리즘인 디피-헬먼의 키 교환에 대해서 오늘 글을 써보려고 한다. Background 디피-헬먼 알고리즘을 이해하기 위해서는 수학적인 배경지식이 필요하다. > Euler's totient function Φ(n) : n보다 작은 수 중에 n과 서로소인 숫자의 갯수 p가 만약 소수라고 한다면 Φ(p) = p - 1이다. > Euler's Theorem n이 소수이고 a와 n가 서로소..
MySQL Free Space Management
MySQL의 Storage Engine은 Innodb이다. Innodb은 Transaction-Safe한 Storage Engine이며 자체적으로 메인메모리 안에 데이터 캐싱과 인덱싱을 위한 버퍼 풀을 가지고 있습니다. 이번 글에서는 데이터 캐싱과 관련해서 Cache Miss가 발생했을 때 MySQL이 이를 어떻게 처리하는지 공부한 것을 정리해보려고 합니다. 먼저 Innodb의 버퍼 풀을 살펴 보겠습니다. InnoDB의 Buffer pool의 구조는 위와 같습니다. 이러한 buffer pool을 다르게 말하면 LRU list라고 이야기합니다. 이는 page 교체 알고리즘을 LRU 방식을 사용하기 때문에 붙여진 이름이라고 생각합니다. Page Hit page들이 어느 영역에 속하는지에 따라 Page hit..
Docker란?
소프트웨어를 배포하려면 소프트웨어 자체 뿐만 아니라 의존성과 구성이 필요하다. 여기서 의존성이란 라이브러리, 인터프리터, 서브 패키지, 컴파일러 , 확장 등을 의미하고 구성이라는 것은 설정, 라이선스 키, 데이터베이스 비밀번호 등을 의미한다. 이러한 문제를 해결하기 위해서 옴니버스 패키지, 가상 머신 이미지 등의 방법들이 있지만 이들은 규모가 너무 크고 다루기 힘들며 구축과 유지보수에 시간이 오래 걸린다. 더욱이 여러대의 프로그램을 한 서버에서 돌릴려면 이러한 다양한 종류의 패키지에 대해 관리, 감시, 네트워크 설정 등의 부수적인 작업이 필요하다. 이런 문제를 해결하기 위해 등장 한 것이 컨테이너이다. 컨테이너는 쉽게 말하면 소프트웨어 배포 및 패키징 단위이다. 더 나아가서 설명하면 재사용, 스케일링, ..