목록CS 지식 (169)
개발놀이터
이번 포스팅에서는 CAP정리를 간단하게 복기해보고 CP, AP 데이터베이스의 특징에 대해서 정리해보도록 하겠습니다. CAP 정리CAP 정리는 2000년에 Brewer가 발표한 이론으로서 "분산 시스템에서 C, A, P를 모두 만족하는 데이터베이스는 없다" 라는 이론입니다. 이 이론에 대한 증명이 끝났기 때문에 더이상 이론이 아니라 정리라고 불러야하는 것이죠. CAP 정리에 대해 포스팅한 것이 있어서 그걸 좀 가져와봤습니다. https://coding-review.tistory.com/312 CAP 정리와 한계 PACELC 정리이번 포스팅에서는 Brewer (브루어)의 CAP정리에 대해서 알아보도록 하겠습니다. CAP정리가 20년도 더 된 정리이기 때문에 그걸 보완한 PACELC 정리에 대해서도 알아..

NoSQL 중에서 가장 인기있는 데이터베이스를 꼽아보라고 한다면 당연 MongoDB이지않을까 싶습니다. 저도 NoSQL에 대해서 공부하기 전에도 MongoDB는 알고 있었을 정도니까 말 다한것이죠. 오늘 포스팅에선 NoSQL 그 중에서 MongoDB가 어느 부분이 특별해서 이렇게 많은 개발자들에게 사랑받고 있는지 정리해봤습니다. MongoDB의 구성 요소MongoDB의 구성요소는 RDBMS의 그것과 굉장히 닮아있습니다. 하나씩 살펴보겠습니다. Collection : Collection은 RDBMS에서 테이블에 해당하는 개념으로 문서들의 집합체입니다. Collection은 스키마가 따로 존재하지 않아서 다양한 구조의 문서를 저장할 수 있습니다. Document : MongoDB의 데이터 저장 단위로 ..

약 20일전에 "메세지 브로커의 근심과 걱정" 이라는 포스팅을 작성하였습니다. https://coding-review.tistory.com/566 메세지 브로커의 근심과 걱정마이크로 서비스와 메세지 브로커는 뗄 수 없는 사이입니다. 서로 다른 도메인이 여러개의 서버로 나눠져 있는 상황에서 모든 서버에 동일하게 데이터를 전달해야 하는 경우에 메세지 브로커만coding-review.tistory.com 위의 포스팅에서는 데이터베이스의 트랜잭션과 메세지 브로커의 통합을 위해서 어떤 부분을 고려해야 하는지에 대한 내용이었습니다. 정상적인 상황에서는 문제 없지만 만약 예외 상황에서 트랜잭션 롤백이 되었을 때 메세지 브로커도 그에 맞춰서 메세지가 전송되지 않아야하는데 트랜잭션과 메세지 브로커를 통합하는 것은 또..

우리가 파일을 다운로드 하는 경우는 정말 흔하게 일어나죠. 그 중에서 이번 포스팅에선 TCP프로토콜을 이용해서 파일을 다운로드 하는 경우에 패킷이 어떤 흐름으로 이동하는지에 대해서 공부해보고 정리해봤습니다! 패킷 한 조각의 모험, 바로 시작해보겠습니다! 패킷의 여행보통 대부분의 네트워크는 TCP/IP 프로토콜을 이용하는 것으로 알고 있습니다. 때문에 이번 포스팅에서도 TCP프로토콜에 한정하여 이야기해보도록 하겠습니다. 서버는 우리 컴퓨터와 네트워크로 연결하기 위해 TCP/IP 프로토콜을 사용합니다. 서버는 TCP연결을 위해 소켓을 여는데 이 소켓은 유닉스 체계에서 파일로 이루어져 있습니다. 파일을 들고 있는 서버는 웹 서버라고 한다면 이 웹 서버는 프로세스 위에서 동작합니다. 즉, 추상화 해보면 프로..
TCP프로토콜은 전세계적으로 가장 많이 사용되는 프로토콜 중 하나인데요. 이 TCP프로토콜이 OS레벨에서는 어떻게 움직이는지 살짝 궁금해져서 공부해보고 정리해봤습니다! OS레벨에서 개요를 살펴보고 여기에 Nginx, Tomcat이 들어가고 데이터베이스가 어떻게 데이터를 가져오는지 흐름에 대해서 정리해봤습니다. 해당 포스팅은 TCP/IP에 대한 내용이 생략되어있습니다. 아래의 링크에 부족하지만 어느정도 정리가 되어있으니 참고해주시면 감사하겠습니다. https://coding-review.tistory.com/466 네트워크 흐름제어와 혼잡제어 (Flow Control, Congestion Control)우리가 흔히 말하는 네트워크 통신은 TCP 3way handshaking에 의해 일어납니다. 그리고..

MySQL의 InnoDB 스토리지 엔진의 기본 격리수준은 REPEATABLE READ입니다. 하지만 REPEATABLE READ에서 발생할 수 있는 문제 중 하나인 Phantom Read를 피할 수는 없는데요. MySQL은 각종 locking 매커니즘을 이용해서 Phantom Read를 막을 수 있었다고 MySQL팀은 설명했습니다. 하지만 무조건 Phantom Read가 발생하지 않는 것은 아닙니다. 이번 포스팅에선 MySQL에 사는 유령에 대해서 공부해보고 정리해봤습니다. Phantom Read우선 Phantom Read에 대해서 간단하게 짚고 넘어가도록 하겠습니다. 어떤 상황이 Phantom Read를 발생시킬까요? A트랜잭션이 SELECT 쿼리를 날린다B트랜잭션이 이후 INSERT 쿼리를 날..

이번 포스팅에선 리눅스가 어떻게 파일을 읽고 쓰는지에 대해서 공부해본 내용을 정리하려합니다. 요즘 리눅스 커널에 대해서 공부하고있는데요. 아직 배경지식이 전무하다시피해서 공부하는데 애먹고있습니다. 바로 시작해보죠! cf) 이 포스팅 전 읽고 오시면 좋은 글이 있습니다! 파일시스템에 대한 간략한 정보들이 정리되어있습니다. https://coding-review.tistory.com/564 리눅스 기본 명령어 동작 원리 : 디렉토리 구조편 (cd, ls, rm, mv, cp)이번 포스팅은 이전 포스팅에서 영감을 얻었습니다. https://coding-review.tistory.com/563 데이터베이스 쿼리를 실행하면 내부적으로는 어떤 일이 벌어질까?오랜만에 포스팅을 쓰는 것 같습니다. 거coding-r..
이번 포스팅은 이전 포스팅에서 영감을 얻었습니다. https://coding-review.tistory.com/563 데이터베이스 쿼리를 실행하면 내부적으로는 어떤 일이 벌어질까?오랜만에 포스팅을 쓰는 것 같습니다. 거의 열흘만인 것 같은데 요즘 쿠버네티스를 공부하느라고 실습을 위주로 공부하고 있느라 공부할 시간이 마땅히 나지 않았네요... 이번 포스팅은 평소coding-review.tistory.com제 공부 방향은 항상 문득 떠오르는 주제이거나 이전 주제에서 깊이있게 공부해볼만한 주제를 따로 선정해서 더 공부하는 편입니다. 이전에 데이터베이스 쿼리를 실행하면 OS레벨에서 어떤 일이 벌어지는지 공부했는데 이때 System Call이나 파일시스템에 대해서 많은 공부가 되었고 이 내용을 잘 활용하면 기..
오랜만에 포스팅을 쓰는 것 같습니다. 거의 열흘만인 것 같은데 요즘 쿠버네티스를 공부하느라고 실습을 위주로 공부하고 있느라 공부할 시간이 마땅히 나지 않았네요... 이번 포스팅은 평소에도 너무나도 궁금했던 데이터베이스의 연산과 그 속사정입니다. 이번 포스팅에선 OS레벨에서의 속사정과 데이터베이스 내부의 속사정 두가지 관점에서 톺아보도록 하겠습니다. 쿼리를 실행하면 OS레벨에선 어떤 일이 벌어질까?우리는 아래와 같은 쿼리를 날렸습니다. SELECT * FROM USER u LEFT JOIN ORDER o ON u.user_id = o.user_id WHERE u.user_id = 20; 그럼 데이터가 어떻게 우리 눈에 보일 수 있게 될까요? 이 질문이 머리속에서 떠오르고 난 뒤 곰곰히 생각해봤을 때..
요즘 많은 곳에서 JWT를 인증에 사용하시는 것 같습니다. 크게는 MSA를 사용하는 곳부터 세션 스토리지를 둘 여력이 없는 스타트업까지 다양하게 사용하고 계시는 것 같습니다. 물론 이런 흐름에 맞춰 저를 비롯한 많은 취준생분들도 포트폴리오에 인증 레이어를 JWT로 사용했다는 포트폴리오를 많이 봤습니다. 하지만 이런 상황은 면접관들에게 좋은 먹잇감이 되기 쉽다는 것을 취준할 때 면접보면서 깨달았죠. 지금은 현재 회사에서도 JWT를 이용해서 인증을 처리하고 있지만 고려해야 할 사항들이 세션보다 많아 제가 현업에서 겪었던 경험 + 다른 사람이 겪었던 경험 이렇게 혼합해서 정리를 해보려고합니다. JWT 사용시 주의사항세션을 이용해서 인증을 구현하면 서버가 여러대일 경우 문제가 발생할 수 있습니다. 그 ..