공부 정리

    IT 용어 정리

    해당 글은 스파르타코딩클럽의 강의를 통해 이루어졌습니다. https://spartacodingclub.kr/online/coding101 자세한 모든 내용을 알고싶다면 강의 수강을 권해드립니다. 컴퓨터와 인터넷 컴퓨터란? 기본적으로 기계를 모아둔 것. 우린 사일 매일 기계를 제어하는 것. > 이걸 해주는게 OS > OS에 명령 내리는게 "코딩" 프로그래밍 언어는 그 명령을 어떤 말로 하느냐인것. 그리고 그 언어로 미리 짜둬서 매번 똑같이 움직이는 게 프로그램 컴퓨터끼리 소통 = 인터넷 대화를 하기위해 규칙이 필요. 그 규칙중 하나가 http = 웹 자 프로그래밍 언어로 OS에게 명령을 내리는데. 그 명령이 잘듣고있다가 누가 http 요청하면 이 파일을 돌려라. 가 웹 서버입니다. -------------..

    코딩에는 어떤 분야가 있을까?

    https://www.youtube.com/watch?v=nnrqBJqp0dU 해당 글은 조코딩님의 유튜브 영상을보며 그대로 정리하였음을 밝힙니다. 이 글을보고 관심이 생긴다면 영상을 직접 보시는걸 추천드립니다! 개발자의 분야 1. 프론트엔드 ( 클라이언트 ) : 눈에 보이는 화면 / 웹, 모바일, PC, 개인 등 화면 2. 백엔드 ( 서버 ) : 안에보이는 정보 처리 / 서비 3. 데이터 : 데이터 처리 / 빅데이터, 머신러닝, 인공지능 4. 임베디드 : 하드웨어와 밀집 / 운영체제, 미들웨어 5. 보안 : 보안관련 / 보안해킹, 취약점 분석, 백신 개발 어떤 것을 공부해야할까? > 프론트엔드( 클라이언트 ) 웹, 앱, PC, 게임 웹 - HTML (뼈대를 잡아줌) / CSS (색상 , 꾸며주기) / ..

    [ 네트워크 ] 3-way handshake, 4-way handshake 과정을 설명해 보세요.

    참고 ) TCP와 UDP의 특징을 설명해 보세요. TCP/UDP 모두 OSI 7 Layer 중 Transport layer에서 사용하는 기술입니다. TCP는 3-way handshake 과정을 통해 연결을 설정하고 4-way handshaker과정을 통해 해제합니다. TCP는 흐름 제어를 위해 보편적으로 Sliding Window 방식을 사용합니다. 한 번에 처리할 수 있는 데이터를 정해 놓고, 보내고, 응답받고, 윈도우를 밀어내는 방식을 반복해서 전송합니다. 이 때, Receiver는 Sender로 ACK을 보냅니다. ACK을 보낼 때, Seq번호를 순차적으로 같이 전송하기 때문에 Sender는 같은 Seq번호의 ACK이 여러 번 도착할 경우 문제가 발생한 것을 알 수 있습니다. TCP는 세그먼트가 손..

    [ 네트워크 ] DNS서버에 요청하는 과정을 자세하게 설명해 보세요.

    www.google.com 에 요청한다고 가정하겠습니다. 브라우저는 DNS서버에 요청하기 전, 브라우저에 도메인이 캐싱되어 있는지 확인합니다. 없을 경우, OS의 hosts파일에 도메인이 있는지 확인합니다. 없을 경우, local dns서버에 물어봅니다. local dns서버는 root name서버의 ip주소를 기록한 hint파일이 있어, 이것을 참조하여 local dns 서버로 요청을 보냅니다. root name서버는 NS레코드와 A레코드가 있는 Glue레코드를 참조하여 top-level name server를 참조하라고 응답합니다. top-level name server - com 서버는 그 아래 서버에 대한 정보를 갖고 있어 google.com의 네임서버를 참조하라고 응답합니다. 최 요청을 받은 네..

    [ 네트워크 ] 웹사이트에 접속할 때 무슨 일이 일이 일어나는지 설명해 보세요.

    주소창에 URL을 입력하면 브라우저는 DNS서버에 요청을 해서 IP주소를 얻습니다. IP주소를 얻으면 HTTP를 이용해서 IP주소로 웹사이트에 대해 요청합니다. 서버는 요청을 받으면, 처리해서 다시 응답을 보냅니다. 브라우저는 응답을 받으면 HTML코드를 파싱해서 화면에 출력합니다.

    [ 데이터 베이스 ] Consistent Hashing에 대해서 설명해 보세요.

    Hash Ring을 사용해서 해싱을 하는 방법입니다. 메타정보 조회 없이 클러스터에서 키가 저장된 노드를 바로 찾아갈 수 있습니다. Rebalancing문제를 해결하기 위한 방법입니다. Virtual Node는, 실제 물리 노드보다 토큰을 더 많이 보유하는 방식입니다. 이를 통해, Object분포의 불균일성을 해결합니다. 일반 HashTable을 사용하면, 분산 DB에서 node를 추가하거나 삭제하는데 O(K)의 시간이 걸립니다. (K는 Key의 수) Coninstent Hashing을 사용하면 O(K/N)의 시간으로 가능합니다. 단, Key를 추가하거나 삭제할 때, 일반적인 HashTable은 O(1)이면 가능하지만, Consistent Hashing의 경우 O(logN)의 시간이 걸립니다. (N은 N..

    [ 데이터 베이스 ] Replication과 Clustering에 대해서 설명해 보세요.

    리플리케이션은, DB를 권한에 따라 Master-Slave로 구축하는 방식입니다. Master Node는 쓰기작업만을, Slave Node는 읽기작업만을 처리합니다. 비동기적으로 운영되어 지연시간이 적은 장점이 있지만, 데이터 동기화가 보장되지 않아 일관성에 문제가 있을 수 있고, Master Node에 문제가 생길 경우 복구가 어렵습니다. 클러스터링은, DB를 여러개의 서버에 수평적으로 구축하는 방식입니다. 클러스터링은 SPoF(Single point of Failure)와 같은 문제를 해결하기 위해서 사용합니다. 동기적으로 운영되어 Write에 지연 시간이 있습니다. 항상 일관성있는 데이터를 얻을 수 있고, 하나의 노드가 죽어도 끊김없이 계속 운용이 가능합니다. ### 손병구님 #### https:/..

    [ 데이터 베이스 ] Partitioning과 Sharding에 대해서 설명해 보세요.

    파티셔닝은, Perfomance, Manageability, Availability를 향상시키기 위해 테이블/인덱스를 분리하는 방법입니다. 파티셔닝 방법은 크게 두가지로 볼 수 있습니다. Horizontal Partitioning은, 동일한 스키마의 데이터를 여러개의 테이블에 나누어 저장하는 것을 뜻합니다. Row기반으로 데이터를 분리합니다. Vertical Partitioning은, 하나의 Entity에 저장된 데이터를 여러개의 엔티티로 분리하는것을 뜻합니다. Column기반으로 데이터를 분리합니다. Range Partitioning은, 연속적인 숫자 등을 기준으로 파티셔닝 하는 방식입니다. Hash Partitioning은, 각 파티션마다 해시값의 범위를 할당하는 방식입니다. 범위 Query를 효율적..