반응형

정리

    객체지향의 사실과 오해 3 ~ 4장

    객체지향의 사실과 오해 국내도서 저자 : 조영호 출판 : 위키북스 2015.06.17 상세보기 3. 타입과 추상화 추상화는 어떤 내용을 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법이다. 그 방법으로 사물간의 차이점을 빼고 공통점을 일반화하여 단순하게 만들고 불필요한 세부사항을 제거하여 단순화 하는 것이다. 즉 복잡성을 이해하기 쉬운 수준으로 단순화하는 것이다. 이런 추상화 개념을 이용해서 객체지향에 대입해서 생각해보자. 그룹화 각 객체는 명확한 경계를 가지고 서로 구별할 수 있는 구체적인 사람이나 사물을 말한다. 여러 객체에서 공통적인 요소를 뽑아서 그룹화 하면 복잡성을 효과적으로 감소 시킬 수 있다. 예를 들어 토끼, 강아지 등을 동물이라는 공통의 ..

    Elasticsearch node 종류와 기본 설정 옵션

    Elasticsearch의 노드 Elasticsearch의 인스턴스를 시작하는 동시에 노드도 같이 시작된다. 노드들을 연결해놓은 것을 클러스터라고 한다. 만약 하나의 엘라스틱 서치 노드만을 실행시킨 경우도 하나의 노드를 가진 클러스터라고 한다. 클러스터안에서 모든 노드는 HTTP와 Transport 트래픽을 기본적으로 다룬다. Transport 레이어는 오로지 노드들과 Java TransportClient와의 통신에만 사용된다. Http 레이어는 오직 외부 Rest Cliente들과 통신할 때 사용된다. 모든 노드는 클러스터 안에서 서로 다른 노드들에 대하여 알고 있고 client에 요청을 적적한 노드로 향하게 조절해준다. 기본적으로 노드는 master-eligible, data, ingest, mach..

    [번역] shared message queues와 publish-subscribe 방식에 Custom Group 방식을 더한 Kafka 소개

    전통적으로 메시지 모델은 Shared Message Queue, Publish-subscribe로 구분된다. 두 가지 모델 모두 그들만에 pros and cons를 보유하고 있다. 하지만 이 두개의 모두 최초 디자인 제한 때문에 큰 데이터를 다루기에는 부족했다. Apache Kafka는 두 모델 중 publish-subscribe 메시징 모델을 구현한 모델로 부족했던 부분을 수정하고 실시간 분석을 위한 스트리밍 데이터를 처리할 수 있도록 가능해졌다. kafka는 LinkedIn에서 2010년에 방대한 데이터 처리를 위해서 개발되었다. Apache Kafka는 전통적인 메시징 모델이 달성하지 못한 격차를 해소했다. Kafka는 두 모델의 개념을 구현하여 단점을 극복하고 동시에 두 가지 방법론을 모두 통합 ..

    Nginx, Apache 그리고 node.js 성능 관련 잡다한 정리

    Nginx과 Apache 비교 Nginx Apache 특징 - Nginx는 싱글 스레드 Event driven 방식- 미리 설정된 worker 프로세스 안에서 요청이 들어올 때 마다 요청을 분배하여 worker에게 역할을 분배- 기존에 정해놓은 리소스를 사용하기 때문에 CPU, Memory 등의 자원 사용률이 낮음 - 요청이 올 때마다 쓰레드를 생성하여 할당한다. 작업이 많아질 경우 많은 쓰레드할당이 필요하다. 그리고 쓰레드들이 작업을 진행 할 때마다 CPU를 사용하려 하기 때문에 문맥교환이 자주 발생된다. 차이점 - Apache에 경우 Blocking 방식으로 Network, DB 등 별도의 동작이 진행 될 때 Block되지만 Nginx는 Non-blocking 방식을 지원함 Non-blocking, ..

    Kafka 요약 정리

    Topic- 메시지는 Topic에 분류된다. Partition- Topic은 partition으로 구분된다.- 파티션에 쌓이는 데이터는 로그라고 부르고 각 파티션에 나눠서 저장된다. Topic이 파티션으로 나뉘는 이유- Topic 내부에 파티션이 없을경우 메시지를 보내는 대상이 많아질경우 append 속도가 버거워진다. - 병렬로 분산저장하고자 Partition 개념 생성- 한번 생성한 파티션은 운영중에 줄일 수 없기 때문에 설계시 조심 Consumer- Topic에 있는 데이터를 읽는 대상 Consumer Group- Consumer를 여러개 묶어놓은 것. Consumer Group이 필요한 이유.- 소비를 진행 하던 Consumer가 죽어버릴 경우를 Rebalance 상황이라고 하는데 이럴경우 파티션..

    Kafka 정리

    카프카는 분산형 스트리밍 플랫폼으로써 다음으로 정의할 수 있다. 메시지 큐와 유사하게 스트림을 publish하고 subscribe 하는 방식이다.fault-tolerant 지속 방식으로 레코드들의 스트림들을 저장한다. 용도 시스템이나 어플리케이션에서 발생한 실시간 스트리밍 데이터를 안정적으로 데이터 파이라인 구축할 때데이터 스트림을 전송하거나 처리해야할 때 사용 구성 하나이상에 서버에 여러 cluster로 구성되어 있다.topic이라는 카테고리로 레코드 스트림들을 저장한다.각각의 레코드들은 key, value, timestamp로 구성되어 있다. 핵심 APIProducer API하나 또는 그 이상의 카프카 topic을 데이터 스트림에 발행할 수 있도록 해주는 APIConsumer API어플리케이션이 하나..

    마이크로서비스 역량 모델

    마이크로 서비스 구현에 필요한 역량은 상황에 따라 다를 수 밖에 없다. 그래서 마이크로서비스 설계 시 필요한 역량 모델에 대해 정리해보자. 마이크로서비스의 역량 모델은 크게 4 개의 영역으로 분류할 수 있다. 핵심역량지원역량인프라스트럭처 역량프로세스 및 통제 역량 1. 핵심역량 (Core capabilities)- 핵심 역량은 하나의 마이크로서비스 안에 패키징 되는 컴포넌트이다. 이곳에서 서비스 리스너, 실행 라이브러리, 서비스 구현 코드, 서비스 API와 종단점이 들어있다. ※ 서비스 리스너와 라이브러리서비스 리스너는 마이크로 서비스로 들어오는 서비스 요청을 접수하는 종단점 리스너이다.주로 사용 되는 리스너는 AMQP나 JMS 같은 메시지 리스너가 주로 사용된다. ※ 저장 기능데이터를 저장 하는 RDB..

    TCP/IP 정의와 전송과정 정리

    TCP/IP(Transmission Control Protocol / Internet Protocol)란?- 네트워크와 네트워크를 연결하기 위한 포로토콜.. 여러 개의 네트웍을 연결해서 데이터를 서로 주고 받기위해, 서로 상호연결하기위한 프로토콜이다. 데이터가 생성 되면 각각의 계층에서는 각각의 헤더(Header)를 붙이게 된다. 헤더라는 것은 각 계층에서 해야 할 일들을 정의한 오버헤드(Overhead)라고 할 수 있는데, 각 계층을 지나면서 각 계층에서 해야 할 일을 헤더에 붙이는 작업을 데이터 캡슐화(Data Encapsulation)라고 한다. - 역 다중화(Demultiplexing) : 수신 측 입장에서 데이터 생성과정. 전송과정 1. 데이터링크 계층- 패킷을 전달하는 물리적 인터페이스와 관련..

    비트코인 핵심기술 블록체인 핵심 요약

    다들 비트코인붐이 오기 시작하면서 돈을 잃은 사람도 있고, 돈을 얻었다는 사람도 있다. 나는 그 노선에 같이 달리지는 않았지만, 새로운 기술과 트렌드에 뒤쳐지는 느낌이 들어서 늦게나마 공부를 해보고 싶었다. 그 중에서 비트코인의 핵심 기술이라고 불리는 블록체인이 무엇인지 조사해보았다. (인터넷에 있는 자료를 바탕으로 정리한 내용이다. 출처는 문서 하단에 기재하였다.) 제 3자 인증에서 개인과 개인간의 인증 시스템(P2P)기존의 화폐거래를 하기위해서는 은행이라는 제 3기관의 인증을 통해 진행되었다. 예를 들어 설명해보자. 만약 위들이라는 사람이 다니라는 사람에게 10만원을 전송하고자 할 때, 위들은 은행에 내 계좌에서 10만원을 다니에게 전송하라고 요청할 것이다. 그럼 은행은 다니에게 10만원을 전송할 것..

    Java Thread 대표 메서드 소개 및 특징 정리

    처음 입사 후 담당했던 프로젝트의 경우 단일 스레드로 동작하며, 동작 필요에 따라 Thread를 만들어주고 UI에 Lock 걸리는 것을 방지하기 위해 UI Thread 처리도 별도로 해주어야 했다. 그래서 Thread에 대해 많이 익숙 했었다. 하지만 Web 프로젝트를 진행하면서 Container에서 기본적으로 Multi-Thread를 지원해주기 때문에 동기화 처리를 제외하고는 그렇게 크게 Multi-Thread에 대해 처리를 해줄 필요가 없게 되었다. 핑계일 수 있지만 이러한 이유로 많이 잊어먹은 Thread에 대해 다시한번 정리해보았다. Thread 실행 Thread에서 start를 해야한다. start()메소드는 새로운 쓰레드가 작업을 실행하는데 필요한 호출스택(공간)을 생성한 다음 run()을 호..

반응형