목록분류 전체보기 (99)
뜌릅

왜 로드밸런싱을 사용할까? 결론부터 말하자면 병목현상을 방지하기 위함이다. 요즘 시대에는 웹사이트에 접속하는 인원이 급격하게 늘어났고, 이 모든 트래픽을 1개의 서버로 감당하기는 힘들어 졌다. 따라서 여러개의 서버들이 요청들을 분담해서 처리하기 시작했다. 그렇다면 누가 분담을 해주는 것일까? 마구잡이로 분담을 하게 되면 여러개의 서버중 특정 하나에만 요청이 쏠릴수 있고(또 다시 병목), 잠깐 문제가 생겼거나 점검중인 서버에 리소스를 분배할 수도 있다. 또 기존의 서버들로는 감당하기 힘들거나 오히려 놀고있는 서버가 존재할 수도 있다. 이런경우에 서버를 Scale-Out(새로운 서버를 늘리기), Scale-In(안쓰는 서버 없애기)을 해야 한다. 이것들을 고려하여 분담을 해주는 것을 로드 밸런스 서버라고 한..

CS스터디를 진행하던 중에 대칭키 공개키 주제가 나왔다. 들어보기만 했던 단어여서 공부해 보았다. 이 둘은 암복호화와 관련된 용어이다. 암복호화는 암호화(Encrpytion)와 복호화(Decrpytion)의 줄임말이다. 이 변환은 특정한 암호화 알고리즘을 사용하고, 이 알고리즘은 대부분 키라는 특정한 값을 이용해 동작합니다. 암호화된 정보는 키 없이는 원래의 정보로 해독할 수 없어 정보의 보안을 유지할 수 없습니다. 반면, 복호화는 암호화된 정보(암호문)를 다시 원래의 정보(평문)로 변환하는 과정을 말합니다. 복호화도 암호화와 마찬가지로 특정한 알고리즘과 키를 사용합니다. 암호화에서 사용된 동일한 키를 사용하여 암호문을 다시 평문으로 변환하는 것이 일반적입니다. 따라서, 암호화와 복호화는 정보 보안에서 ..

TCP는 네트워크 통신에서 신뢰성을 보장하는 연결 방식이다. Network Congestion Avoidance Algorithm(네트워크 혼잡 회피 알고리즘)을 사용한다. 신뢰성을 보장하는 것에는 4가지의 문제점이 존재한다. - 손실: Packet이 손실될 수 있는 문제 - 순서바뀜: Packet의 순서가 바뀌는 문제 - Congestion: 네트워크가 혼잡한 문제 (혼잡제어) - Overload: Reciver가 Overload되는 문제 (흐름제어) 흐름제어/혼잡제어란? 흐름제어(endsystem vs endsystem) 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법 Flow Control은 Reciver가 Packet을 지나치게 많이 받지 않도록 조절하는 것이다. 그렇다면 어떻게 조..

OSI 7계층이란 OSI 7계층은 네트워크의 통신이 일어나는 과정을 7단계로 추상화 한것이다. OSI 7계층은 단순 각 계층의 역할과 이름을 외우는 것이 중요한게 아닌 왜 나누었는지을 알는 것이 중요하다고 생각한다. 우리가 네트워크 환경에서 통신을 한다고 가정하였을 때, 무슨 방법으로 통신할것인지와 계층이 문제가 생겼을시의 해결책 등등 표준이 필요할 것이다. 이를 위해 생긴것이 OSI 7계층인데, OSI 7계층은 범용적인 네트워크 환경에서의 통신을 7가지로 모듈화 하여 각 계층별 프로토콜과 역할을 정의해 놓은 것이다. 각 계층은 범위별로 추상화되어 모듈화 되어 사전에 정의된 프로토콜을 통해 통신을 하게 된다. 상위의 계층은 하위의 계층의 프로토콜을 이요할수 있으며 상위계층의 개발자는 하위 계층의 추상화된..

기존의 클라이언트 서버 모델의 문제점은 4가지가 있었다. - Scalability가 매우 좋지 않았다. 서버가 과부화 되는 문제가 있었다. - 서버가 실패하면 해당 서비스의 모든 기능이 다운되는 문제점이 있었다. - 시스템 관리, 서버를 24시간 감시해야 하며 서버가 다운되면 알아야 한다. 분산화와 다르게 서버가 다운되면 모든게 끝나므로 최대한 빨리 복구해야 하기 때문이다. - 클라이언트 머신도 상당수준의 리소스를 갖고 있는데, 해당 부분을 사용안하고 있다면 자원 낭비이다. 근데 peer가 되면 이문제도 해결이 된다. Peer가 그 리소스를 사용하게 된다. P2P 따라서 이러한 문제때문에 P2P가 도입되었다. P2P는 모두가 서버인 동시에 클라이언트로 동작한다. 인터넷이 가장 대표적인 P2P로서 data..

소프트웨어 아키텍처 소프트웨어 컴포넌트가 어떻게 구성되고 소통하는 방식에 따라 아래와 같이 나뉘어진다. - Centralized architecture - Decentralized architecture - Hybrid Organization 아키텍처 스타일 분산컴퓨팅에는 4가지 중요한 스타일이 존재한다. - Layered Architecture 레이어를 쌓아가는 아키텍처이다. 시스템콜이나 라이브러리 Function Call이 예시이며 아래의 그림처럼 여러가지 종류가 존재한다. 이 레이어 아키텍처에서는 같은 레이어 끼리 Interface을 통하여 통신이 가능하다. 물론 다른 통신방법을 사용한다면 그것 또한 가능하다. 아래의 그림을 참조하자. 통상적인 Layer로는 아래의 3가지가 존재한다. - Appli..

분산컴퓨팅이란 여러개의 컴퓨팅 요소들이 하나의 시스템을 이룬 것이다. 사용자 입장에서는 하나의 시스템으로 보이는 특징을 갖는다. 분산컴퓨팅을 이루는데에 생기는 문제점. 위에서 분산 컴퓨팅은 여러개의 컴퓨팅 요소(노드)들이 하나의 시스템을 이루었다고 했다. 이 요소들이 하나의 시스템처럼 보이기 위해서는 동기화와 협력을 할 줄 알아야한다. 하지만 각 노드들은 독립적으로 Computing을 수행한다. global clock이 존재한다면 쉬운일지만 분산 컴퓨팅에는 공유되는 global clock이 존재하지 않는다. 분산컴퓨팅을 하는데에 다음과 같은 2가지 문제점이 발생한다. 1. 노드간에 의사소통을 어떻게 할것인가? 2. 노드간에 의사소통을 할 때에 해당 노드가 권한을 침해하였는지 어떻게 아는가? 이 2가지 문..

데이터베이스의 정의 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합이라고 정의한다. 데이터베이스의 주요 특징으로는 다음 4가지가 존재한다. 1. 실시간 접근이 가능해야 한다. 응답시간에 차이가 있을지언정 몇초안에는 응답해야한다. 2. 계속 변화가 가능해야 한다. 데이터에 대한 CRUD가 가능해야 한다. 3. 동시 공유가 가능하다. 여러 사용자들이 접근을 허용하고, 같은 데이터를 동시에 사용가능하게 해야 한다. 동시에 같은 데이터를 사용하게 할려면 까다로운 처리가 필요하다. 4. 내용으로 참조가 가능해야 한다. KEY값으로 참조가 아닌 값으로도 가능해야 한다. DBMS 정의 데이터 베이스 관리 시스템의 약자이다. 데이터 베이스에 데이터를 저장하고, 저장된 데이터를 ..
B-Tree 검색을 위한 자료구조 중에서 이진 트리는 비록 하나의 부모가 두개의 자식을 가지질 못하고 자칫 균형이 맞지 않으면 검색 효율이 선형 검색급으로 떨어지지만, 잠재력이 크다. 그렇지만 이진트리에게 한계는 있고, 이를 극복하기 위해 간결함과 균형을 유지할려는 노력이 있었다. 그중에서 B트리가 등장하였다. 많은 수의 자식을 갖을 수 있게 일반화 되었고, (보통 몇개까지 자식을 갖을 수 있는지 정해 놓는다. ex: 4kb 해당 프로그램의 default Page Size에 맞춰 설정된다.) 그 뿐만 아니라 트리의 균형을 자동으로 맞추는 로직까지 갖추었다. 이 균형 로직은 단순하면서 효율적이다. 위에서도 잠깐 언급했듯이, 블록 단위로 노드의 사이즈가 정해진다. 외부 기억장치는 블럭 단위로 입출력을 하기 ..

트라이는 문자열을 저장하고 효율적으로 탐색하기 위한 구조이다. 사용 예 : 자동완성 기능, 사전 검색 등 문자열을 탐색하는데에 특화되어있는 구조이다. 레딕스 트리 or 접두사 트리 or 탐색 트리라고도 한다. 트라이 장단점 - 문자열 검색을 빠르게 한다. (코딩 테스트, 문자열 문제에서 활용 가능 할듯) - 문자열 탐색할때, 하나하나씩 전부 비교하면서 탐색을 하는 것보다 시간복잡도 측면에서 훨씬 더 효율적이다. - 각 노드에서 자식들에 대한 포인터들을 배열로 모두 저장하고 있다는 점에서 저장 공간의 크기가 크다는 단점도 있다. 시간복잡도 시간복잡도는 문자열 최대 길이가 M이면 O(M)으로 문자열 검색이 가능하다. 코드 static class Trie { boolean end; boolean pass; T..