전체 글

전체 글

    모두의 네트워크 5장. 네트워크 계층: 목적지에 데이터 전달하기

    네트워크 계층의 역할 다른 네트워크에 있는 목적지로 데이터를 전달하려면 네트워크 계층의 기술이 필요하다. 데이터 링크 계층에서는 이더넷 규칙을 기반으로 데이터의 전송을 담당한다. 이 규칙에 따라 같은 네트워크에 있는 컴퓨터로는 데이터를 전송할 수 있지만, 인터넷이나 다른 네트워크로는 데이터를 전송할 수 없다. 따라서 이처럼 네트워크 간의 통신을 가능하게 하는 것이 네트워크 계층의 역할이다. 네트워크 계층을 통해 데이터를 전송하려면 라우터라는 네트워크 장비가 필요하다. 라우터 라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지를 알려 주는 기능을 한다. 랜에서는 MAC 주소 만으로도 통신할 수 있지만, 다른 네트워크에는 MAC 주소 만으로는 데이터를 보낼 수 없다. 이 때, ..

    모두의 네트워크 4장. 데이터 링크 계층, 랜에서 데이터 전송하기

    데이터 링크 계층의 역할과 이더넷 이더넷이란? 랜에서 데이터를 주고 받기 위해서는 데이터 링크 계층의 기술이 필요하다. 데이터 링크 계층은 네트워크 장비 간에 신호를 주고받는 규칙을 정하는 계층으로, 랜에서 데이터를 정상적으로 주고받기 위해 필요한 계층이다. 그리고 이 규칙 중 가장 많이 사용되는 규칙이 이더넷이다. 즉, 이더넷은 랜에서 적용되는 규칙이다. 앞서 허브에서는 연결된 모든 포트로 데이터를 보낸다고 했었다. 따라서 이런 경우를 위해 보내려는 데이터에 목적지 정보를 추가해서 보내고 목적지 이외의 컴퓨터는 데이터를 받더라도 무시하게 되어있다. 또한 허브는 앞서 말했든 들어온 데이터를 모든 포트에 그대로 보내기만 하기에 PC 여러대가 동시에 데이터를 보내면 데이터가 충돌할 수 있다. 이를 방지하기 ..

    모두의 네트워크 3장. 물리계층, 데이터를 전기 신호로 변환하기

    전기 신호란? 0과 1로 이루어진 비트열을 전기 신호로 변환하기 위해서는 물리 계층의 기술이 필요하다. 데이터가 전기 신호로 변환되는 과정은 다음과 같다. 송신 측 컴퓨터가 전송하는 0과 1의 비트열 데이터를 전기 신호로 변환해 수신측 컴퓨터에 도착한다. 수신 측 컴퓨터에서는 전기 신호를 0과 1의 비트열 데이터로 복원한다. 0과 1을 어떻게 전기 신호로 변환할까? 컴퓨터는 네트워크를 통해 데이터를 송수신할 수 있도록 랜카드를 포함한다. 이 랜카드가 0과 1을 전기 신호로 변환한다. 케이블의 종류와 구조 네트워크의 전송 매체는 크게 유선과 무선으로 나뉜다. 유선에는 트위스트 페어 케이블, 광케이블 등이 있고 무선에는 라디오파, 마이크로파, 적외선 등이 있다. 트위스트 페어 케이블이란? 일반적으로 랜케이블..

    모두의 네트워크 2장. 네트워크의 기본 규칙

    프로토콜이란? 네트워크에서도 통신하기 위해서는 규칙이 필요하다. 이를 프로토콜이라 한다. 앞서 1장에서 규칙을 지키기 위해 패킷을 사용한다고 했다. 즉, 네트워크에서는 프로토콜로 통신하기 위해 패킷을 사용한다. OSI 모델이란? ISO라는 국제 표준화기구가 있는데, 이 단체에서 OSI 모델이라는 표준 규격을 제정했다. OSI 모델은 네트워크 기술의 기본이 되는 모델이다. 데이터를 송수신하기 위해서는 컴퓨터에서 또다른 컴퓨터로 데이터를 전송한다. 이 때, 컴퓨터 내부에서는 여러 가지 일을 하는데, 이런 일을 일곱개 계층으로 나누어서 한다. 이 7개 계층을 OSI 모델이라고 한다. 1계층 - 물리 계층 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어한다. 2계층 - 데이터 링크 계층 네트워크 기기 간..

    모두의 네트워크 1장. 네트워크의 첫걸음

    컴퓨터 네트워크란? 한 대만으로는 컴퓨터 네트워크라고 할 수 없지만, 두 대 이상 연결되어 있으면 훌륭한 컴퓨터 네트워크가 되고, 컴퓨터 간에 필요한 데이터(정보)를 서로 주고받을 수 있다. 즉, 이를 간단히 네트워크라고 부를 수 있다. 네트워크가 구축되어있으면 우리는 컴퓨터에서 다른 컴퓨터로 데이터를 보낼 수 있고, 웹 사이트를 열람할 수 있으며, 메일 송.수신과 같은 일을 할 수 있다. 인터넷이란? 전 세계의 큰 네트워크로부터 작은 네트워크까지를 연결하는 거대한 네트워크를 말한다. 패킷이란? 웹 브라우저에서는 사진과 문자를 보여주기 위해 필요한 규칙이 있다. 이 규칙에는 패킷을 사용한다. 패킷은 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해 전송되는 데이터의 작은 조각을 말한다. 굳이 왜 나눠 보..

    엘레강트 오브젝트 내용 정리

    이 글은 엘레강트 오브젝트: 새로운 관점에서 바라본 객체지향을 읽고 정리한 내용입니다. 올해 중반 스터디로 한번 정리했던 내용을, 다시 한번 정리합니다. 1장 출생 1.1 -er로 끝나는 이름을 사용하지 마세요 클래스는 객체의 능동적인 관리자이다. (클래스는 객체의 어머니이다.) 클래스 이름을 짓는 적절한 방법은 객체가 노출하고 있는 기능에 기반한 것이 아닌, 클래스가 무엇인지에 기반해야한다. 예를 들어, CashFormatter가 아닌 Cash라고 명명해야한다. 즉, 객체는 그의 capability로 특징지어져야한다. 여기서 -er로 끝나는 이름을 짓는다면, 그것은 바로 기능에 기반하여 클래스를 명명했다고 볼 수 있다. ex. Manager, Controller, Handler, Converter 이와..

    도커 볼륨은 Commit 했을 때 이미지에 반영될까?

    도커 Volume을 사용하면 도커가 관리하는 호스트 파일 시스템의 일부에 데이터가 저장된다. 볼륨용 컨테이너를 사용해도 되고, 직접 호스트의 디렉토리와 매핑해서 볼륨으로 사용해도 된다. 도커 이미지에서의 볼륨을 사용해도 된다. 이때는 자동으로 호스트의 임시 디렉토리와 매핑된다. 어떤 디렉토리와 매핑되는지는 알 필요 없다. 자세한 내용은 5. Docker Volume 사용 - OpenShift - rockPLACE Wiki 여기에도 나와있다. 그렇다면, 오늘의 궁금증인 도커 볼륨은 Commit을 했을 때 변경사항이 이미지에 반영될까? Docker Container에서 Volume으로 지정된 영역에 저장된 데이터는 Docker Commit을 이용하여 변경된 부분을 새로운 이미지로 저장하여도 이미지에 반영되지..

    무중단 배포 적용하기

    목차 무중단 배포란? 프로젝트의 기존 Infra 구조 프로젝트의 기존 배포 흐름 기존 배포 흐름의 문제점 Rolling Update 배포 Blue-Green 배포 프로젝트에 무중단 배포 적용하기 프로젝트의 기존 Infra 구조 현재 보고 또 보고 서비스는 다음과 같은 구조로 구성되어있다. Reverse Proxy — WAS1 —— DB \— WAS2 —/ ㅋㅋ.. 조금 빈약한 그림이지만 말로 설명해보자면 앞단에 웹 서버로 Nginx를 두어 리버스 프록시의 역할을 수행하고 있으며 뒤에 WAS가 2대 띄워져있는 상황이다. (DB Replication 구조는 나타내지 않았다.) 리버스 프록시는 두 인스턴스를 upstream 서버로 보고, 요청을 보낸 클라이언트의 ip를 hashing하여 두 서버로 적절히 요청..

    검색 기능에 Elasticsearch 적용하기

    https://seovalue.github.io/2021/10/22/apply-elasticsearch/ 검색 기능에 Elasticsearch 적용하기 - Milestone | Joanne Blog Elasticsearch란 무엇인가? seovalue.github.io 블로그 이전 중입니다 :)

    MVCC와 잠금 없는 일관된 읽기

    MVCC(Multi Version Concurrency Control)란? MVCC는 레코드 레벨의 트랜잭션을 지원하는 DBMS가 제공하는 기능이며, 락을 사용하지 않는 일관된 읽기를 제공하는 것을 목적으로 한다. MVCC를 InnoDB는 언두 로그(Undo Log)를 이용해 구현한다. MVCC에서 MV, 즉 Multi Version은 하나의 레코드에 대해 여러 버전이 동시에 관리된다는 것을 나타낸다. 예시를 통해 MVCC에 대해 자세히 알아보자. 격리 수준이 READ_COMMITTED인 InnoDB 스토리지 엔진을 사용하는 MySQL 서버에서 테이블의 데이터 변경을 진행한다. INSERT INTO member (m_id, m_name, m_area) VALUES (12, '서민정', '부산'); 먼저,..