전체 글

전체 글

    면접을 위한 CS 전공지식 노트 2장

    네트워크 기초 네트워크란 노드와 링크가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합, 여기서 노드는 서버,라우터,스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미합니다. 처리량과 지연 시간 네트워크를 구축할 때 "좋은: 네트워크로 만드는 것이 중요합니다. 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말합니다. 처리량 - 처리량은 링크 내에서 성공적으로 전달된 데이터의 양을 말하며 보통 얼만큼의 트래픽을 처리했는지를 나타냅니다. "많은 트래픽을 처리한다= 많은 처리량을 가진다" 단위로는 bps(bits per second)를 씁니다. 초당 전송 또는 수신되는 비트 수라는 의미입니다. 처리량은 사용자들이 많은..

    면접을 위한 CS 전공지식 노트 1장

    디자인 패턴과 프로그래밍 패러다임 라이브러리 - 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것을 의미한다. 프레임워크에 비해 자유롭다. 프레임워크 - 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것을 의미한다.폴더명,파림여 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격하다. 디자인 패턴이란? - 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호관계 등의 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어놓은 것 입니다. 1. 싱글톤 패턴 - 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴, 하나의 클래스를 기반을 여러개의 개별적인 인스턴스를 만들 수 있지만, 그렇지게하지않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는데 쓰이며 ,..

    mysql index를 타지않는 경우

    인덱스를 타지 않는 경우 1. 인덱스 컬럼의 변형 select * from table where LOWER(name) ='word'; select * from table where idx - 1 = 5; 이 처럼 인덱스에 변형을 가하게 되면, DBMS가 인덱스를 이용하지 않는다. 2. 인덱스 컬럼의 내부적인 데이터 변환 select * from table where age = '30' 문자값 데이터타입을 갖는 컬럼에 ‘값’ → 값 을 하지 말고 정확한 데이터 타입을 넣어야 인덱스를 탈 수 있다. 3. NOT 또는 IN 연산자 사용 NOT일 경우에도 인덱스를 타긴 타지만, 일반적으로, NOT에 사용된 값이 아닌 데이터의 비율이 높은 경우가 많기 때문에 인덱스를 타지 않는 경우가 많다. 마찬가지로 IN일 경..

    도메인주도개발 시작하기 11장 CQRS

    CQRS란 Command and Query Responsibility Segregation 의 약자로, 데이터 저장소로부터의 읽기와 업데이트 작업을 분리하는 패턴을 말한다 여러 애그리거트의 데이터가 필요하면 다양한 방안의 구현방법을 고민해야한다. 식별자를 이용해서 애그리거트를 참조하는 방식을 사용하여 가져와한다. 상태 변경 기능은 주로 한 애그리거트의 상태를 변경한다. 반면, 조회 기능은 두 개 이상의 애그리거트가 필요할 때가 많다. 상태를 변경하는 범위와 조회하는 범위가 일치하지 않기 때문에 단일 모델로 두 종류의 기능을 구현하면 모델이 불필요하게 복잡해진다. 위 복잡도를 해결하기 위해 사용하는 방법이 CQRS이다. CQRS : 명령(Command)을 위한 모델과 조회(Query)를 위한 모델을 분리하..

    도메인주도개발 시작하기 10장 이벤트

    ## 시스템 간 강결합 문제 쇼핑몰에서 구매를 취소하면 환불처리를 해야한다. 이때 보통 결제 시스템은 외부에 있으므로 Order 도메인에서 구매 취소에 관련된 서비스를 다음과 같이 파라미터로 주입할 것이다. 위처럼 외부 시스템을 도메인에서 호출 시 3가지 문제가 발생할 수 있다. 1. 외부 서비스가 비정상일 경우 트랜젝션 처리를 어떻게 할까? - 롤백을 해야할까? 일단 커밋을 해야할까?, 아니면 상태만 변경한 후에 나중에 다시 시도를 해야할까? 2. 외부 시스템의 응답 시간이 길어지면 어떻게 할까? - 대기 시간만큼 응답시간이 길어져서 성능에 악영향을 주지 않을까? 3. 도메인 객체에 서비스를 전달하면 설계상 문제가 발생하지 않을까? - 도메인 로직과 외부 로직이 뒤섞이지 않을까? 바운디드 컨텍스트 간 ..

    도메인주도개발 시작하기 9장 바운디드컨텍스트

    # 바운디드 컨텍스트 간 통합 - 인프라 영역에서 외부 시스템과의 연동을 처리 - RecSystemClient에서 도메인 모델 변환하는 작업을 처리 - 두 모델 간 변환 과정이 복잡하면 변환 처리를 위한 별도 클래스 생성 가능 - Rest API를 통해 두 바운디드 컨텍스트를 직접 통합할 수 있고, 메시지큐를 사용하여 간접적으로 통합할 수도 있음 - 비동기적으로 처리 가능 - 단, 두 바운디드 컨텍스트가 사용할 메시지의 데이터 구조를 맞춰야 - 변경 내용을 여러 컨텍스트에 pub-sub 가능 그럼 여기서 , microservice간 restapi 와 message queue로 처리하는 방식의 차이는 뭘까 REST API 통신: 장점: - 간단하고 직관적인 통신 방식으로, HTTP 프로토콜을 사용하여 통신..