목록전체 글 (531)
개발놀이터
이번 포스팅에서는 검색창에 google.com 을 입력했을 때 내부적으로 어떤 일이 벌어지는지 알아보도록 하겠습니다. 이 내용이 면접 단골질문이라고 하더라고요. 알아두시면 잘 써먹을 수 있을 것 같습니다. 특히 OSI 7계층 / TCP 4계층과 엮어서 잘 물어본다고하니 해당 개념에 대해서도 잘 알아두시면 좋을 것 같습니다. OSI 7계층에 대해서는 아래의 링크에서 확인해보세요! https://coding-review.tistory.com/298 OSI 7 계층, TCP / IP 4 계층 네트워크를 공부할 때 OSI 7계층이나 TCP 4계층에 대해서 들어본적이 있을겁니다. 우리는 이번 포스팅에서 OSI 7계층, TCP 4계층이 무엇인지, 이 둘의 차이는 무엇인지, 이 계층을 알면 뭐가 좋은지에 coding..
블로그를 한번 쭉 보니 제가 데이터베이스 공부를 하면서 NoSQL을 굉장히 깊게 공부했는데 BASE에 대해서 다루지 않았더라구요. 이번 포스팅에서는 RDBMS에 ACID가 있다면 NoSQL에는 BASE가 있다! BASE에 대해서 알아보겠습니다. 그리고 BASE에서 가장 중요한 Eventual Consistency에 대해서 깊이있게 알아보도록 하겠습니다. BASEBASE는 ACID와 마찬가지로 NoSQL의 특징을 잘 알려주는 특징들의 앞글자를 따서 만든 단어입니다. BASE에 들어가기 앞서 ACID에 대해서 베이스 지식이 없으시면 아래의 링크에서 참고해주세요! https://coding-review.tistory.com/296 트랜잭션과 ACID (자바에서 트랜잭션을 다루는 방법에 대한 관점으로)이..
Q. 공개키 암호화, 개인키 암호화에 대해서 설명해주세요. A. 기존 대칭키 암호화에서 해커가 둘 중 하나의 키만 갈취해도 데이터를 복호화할 수 있기 때문에 이를 보완하고자 비대칭키 암호화가 등장하였습니다. 비대칭키 암호화의 주된 개념은 암호화와 복호화에 서로 다른 키를 사용하다는 것이고, 데이터를 암호화하는 키의 종류에 따라 사용되는 분야가 다릅니다. 공개키로 암호화하면 데이터 보안에 초점을 맞춘 것이고, 개인키로 암호화 하면 사용자 인증에 초점을 맞춘 것입니다.
Q. Stateless, Stateful에 대해서 설명해주세요. A. Stateful은 하나의 세션에 다음 트랜잭션에 필요한 정보를 가지고 있는 프로토콜입니다. 때문에 클라이언트가 보내는 정보의 양은 적지만 서버가 가지고 있어야 하는 양은 많습니다. Stateful은 데이터가 하나의 세션에 연결되어야 하는 온라인 뱅킹, SMTP 프토콜에서 주로 사용합니다. Stateless는 Stateful과 반대로 다음 트랜잭션에 필요한 정보를 가지고 있지 않은 프로토콜입니다. 때문에 클라이언트가 보내는 양은 많지만 서버가 가지고 있어야 하는 양이 적습니다. Stateless는 확장성과 멀티태스킹에 능하고 이는 HTTP 프로토콜, SMS, DNS등에서 주로 사용됩니다.
entails : 수반하다 intricate : 복잡한, 뒤얽힌 malfunction : 오작동 transient : 덧없는, 무상한 reasoning : 추론, 추리, 증명 mediate : 조정하다, 중재하다 / 화해시키다 foster : 육성하다 retain : 보유하다, 유지하다 For the stateless protocol, storing data is not a priority. Therefore, the servers used as part of the network’s infrastructure do not have to be built to store large amounts of information. stateless 프로토콜에서는 데이터를 저장하는 것이 최우선이 아니다. 그러므로 ..
인터넷에 있는 모든 것들은 프로토콜에 의하여 컨트롤됩니다. 프로토콜이란 인터넷을 통해 모든 데이터가 운반될 때 직접, 혹은 간접적으로 따라야 하는 규약이나 가이드라인이죠. 이 네트워크 프로토콜에도 두가지 프로토콜이 대표적인데, 바로 이번 포스팅에서 알아볼 Stateless, Stateful 프로토콜입니다. 이 둘을 프로토콜 혹은 아키텍처라고도 부르는데요. 아키텍처는 말이 어렵지만 그냥 방법론이라고 생각하시면 됩니다. 즉, Stateless, Stateful을 구현할 수 있는 다양한 방법이 있다는 얘기이죠. 이번 포스팅에선 그런 방법론적인 얘기보다는 Stateless, Stateful이 각각 무엇인지, 그리고 이 둘의 차이는 무엇인지에 대해서 알아볼까합니다. Stateful Architecture Stat..
이번 포스팅에서는 공개키 암호화에 대해서 알아보도록 하겠습니다. 공개키 암호화는 개인키 암호화와 묶여서 설명이 가능한데요. 보통 공개키와 개인키는 SSL handshake에서 사용됩니다. 아직 SSL handshake에 대한 포스팅이 없어서 자세히 설명은 못해드리지만 요약하자면 이겁니다. "인증기관에 인증서를 보내고 인증서는 서버의 공개키로 암호화 되어있습니다. 클라이언트는 본인의 개인키로 인증서를 decrypt할 수 있고 내용을 확인할 수 있다." 이번 시간에는 SSL handshake 의 과정에 해당하는 공개키 암호화, 개인키 암호화에 대해서 알아볼까합니다. 그럼 시작해보죠 공개키 암호화 공개키와 개인키로 암호화하고 이를가지고 통신하는 것은 비대칭키 암호화라고 부릅니다. 맞습니다. 대칭키 암호화도 있..
Q. 클러스터링, 레플리케이션, 샤딩에 대해서 설명해주세요 (이거 안물어볼 가능성이 매우 높습니다) A. 클러스터링이란 하나의 DB 스토리지에 여러 DB 서버를 달아서 원래였다면 하나의 서버에서 감당해야할 부하를 여러 서버가 나눠 담당하기 때문에 성능적인 이점을 볼 수 있습니다. 하지만 DB 스토리지가 하나밖에 없기 때문에 DB스토리지에 문제가 생긴다면 전체 애플리케이션이 죽어버릴 수 있다는 단점이 있습니다. 이를 보완하기 위한 방식이 바로 레플리케이션인데, 레플리케이션은 복제된 DB 스토리지를 각각의 DB서버와 묶어서 DB 스토리지가 죽어버릴 경우에 대비할 수 있습니다. 하지만 슬레이어 DB서버가 많이 늘어난다는 단점이 있습니다. 이를 보완하기 위한 방식이 바로 샤딩입니다. 샤딩은 데이터를 특징에 맞춰..
Q. 로드 밸런싱에 대해서 설명해주세요 A. 로드 밸런싱은 트래픽을 적절히 서버에 분담해주는 기술입니다. 구현한 알고리즘은 정적 로드 밸런싱 알고리즘과, 동적 로드 밸런싱 알고리즘이 있습니다. 정적 알고리즘은 옆 서버의 상태와 성능을 고려하지 않고 순서에 따라 트래픽을 분배한다는 특징이 있습니다. 비효율적으로 보이지만 개발이 단순하다는 장점이 있습니다. 정적 알고리즘에는 라운드 로빈, 가중치에 기반한 라운드 로빈, IP Hash 가 있습니다. 동적 알고리즘은 가용성, 상태, 작업상황에 맞춰 트래픽을 분배한다는 특징이 있습니다. 굉장히 효율적이지만 구현이 까다롭고, 오버헤드가 발생할 수 있다는 단점이 있습니다. 동적 알고리즘에는 Least Connection, Weighted Least Connection..
Q. 동기, 비동기 프로그래밍에 대해서 설명해주세요. A. 동기 프로그래밍은 싱글스레드, Blocking Architecture로 대표되는 프로그래밍으로 요청을 보내면 그에 상응하는 응답이 올때까지 기다린다는 특징이 있습니다. 따라서 속도가 좀 느리고, 확장성이 낮다는 단점이 있지만 개발자 친화적이고, 메모리를 적게 먹으며, 오버헤드가 발생하지 않는다는 장점이 있습니다. 비동기 프로그래밍은 멀티 스레드, Non-Blocking Architecture로 대표되는 프로그래밍으로 요청과 응답이 각각 다른 스레드에 할당되어 응답을 기다리지 않아도 된다는 특징이 있습니다. 그렇기 때문에 속도가 빠르고, 확장성이 높다는 장점이 있지만 구현하기 까다롭고, 메모리를 많이 잡아먹으며, 오버헤드가 발생한다는 단점이 있습니다.