본문 바로가기

분류 전체보기

(93)
유연한 설계 개방 폐쇄 원칙(OCP)확장에 대해 열려 있고, 변경에 대해서는 닫혀 있어야 한다. - 확장에 대해 열려 있다 : 요구사항이 변경될 때 새로운 '동작'을 추가해서 애플리케이션의 기능을 확장할 수 있다 - 변경에 대해 닫혀 있다 : 기존의 '코드'를 수정하지 않고도 애플리케이션의 동작을 추가하거나 변경할 수 있다 컴파일 타임 의존성을 고정시키고 런타임 의존성을 변경하라컴파일 타임 의존성 : 코드에서 드러나는 클래스들 사이의 관계런타임 의존성 : 실행시에 협력에 참여하는 객체들 사이의 관계개방 폐쇄 원칙을 따르는 설계를 하자 추상화가 핵심이다개방 폐쇄 원칙의 핵심은 추상화에 의존하는 것추상화 - 핵심적인 부분만 남기고 불필요한 부분은 생략함으로써 복잡성을 극복하는 기법 - 문맥이 바뀌더라도 변하지 않는 부분..
도커의 기초 도커의 기본 개념컨테이너 가상화를 구현하기 위한 상주 애플리케이션과 이를 관리하는 명령형 도구로 구성컨테이너 - 컨테이너 가상화 소프트웨어 없이 운영 체제의 리소스를 격리해 만드는 가상 운영 체제 - 컨테이너를 만들면서 발생하는 오버헤드는 다른 가상화 소프트웨어보다 더 적음 - 빠르게 시작 및 종료할 수 있고 이에 들어가는 리소스도 작은편애플리케이션이 중심이 되는 도커 - 호스트 운영 체제의 영향을 받지 않는 실행 환경(Docker Engine을 이용한 실행 환경 표준화) - DSL(Dockerfile)을 이용한 컨테이너 구성 및 애플리케이션 배포 정의 - 이미지 버전 관리 - 레이어 구조를 갖는 이미지 포맷(차분 빌드가 가능함) - 도커 레지스트리(이미지 저장 서버 역할을 함) - 프로그램 가능한 다양..
의존성 관리하기 변경과 의존성실행 시점 : 의존하는 객체가 정상적으로 동작하기 위해서는 실행 시에 의존 대상 객체가 반드시 존재해야 한다.구현 시점 : 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경된다. 의존성 전이(transitive dependency)직접 의존성(direct dependency) : 한 요소가 다른 요소에 직접 의존하는 경우간접 의존성(indirect dependency) : 직접적인 관계는 존재하지 않지만 의존성 전이에 의해 영향이 전파되는 경우 런타임 의존성과 컴파일 타임 의존성런타임 의존성(run-time dependency) : 애플리케이션이 실행되는 시점의 의존성 - 객체 사이의 의존성컴파일타임 의존성(compile-time dependency) : 작성된 코드를 컴파일하는 시점..
Spring boot - Apache Kafka maven dependencyorg.springframework.kafkaspring-kafka Producer를 통해 전송하고 Consumer를 통해 받는다.예제 코드와 컨피그 설명은 아래 참조 블로그에 정리가 잘 되어 있다. [참조]https://madplay.github.io/post/kafka-producer-consumer-optionshttps://sunghs.tistory.com/80https://seungwoo0429.tistory.com/29
FQDN - Fully Qualified Domain Name 절대 도메인 네임, 전체 도메인 네임 정도로 할 수 있지만, IT 업계에서는 FQDN이라는 약자 하나로 통용된다. www.tistory.com을 예로 들어보면 www 가 호스트이고, tistory.com이 도메인FQDN - 호스트와 도메인을 함께 명시하여 전체 경로를 표기하는 것 - FQDN은 모호하지 않고, 유일해야 함PQDN(Partially Qualified Domain Name) - FQDN과 달리 전체 경로명이 아닌 하위 일부 경로를 모두 표기하는 것 쿠버네티스의 경우 다른 Pod를 찾을 시 - 동일 네임스페이스 안에서 찾을 때에는 PQDN을 사용할 수 있음 - 네임스페이스 외부에서 찾을 때에는 FQDN을 사용해야 함 [참조]https://onlywis.tistory.com/14https://w..
객체 분해 객체 분해추상화(abstraction) : 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업분해(decomposition) : 큰 문제를 해결 가능한 작은 문제로 나누는 작업 프로시저 추상화와 데이터 추상화시스템을 분해하는 방법을 결정하려면 먼저 프로시저 추상화를 중심으로 할 것인지, 데이터 추상화를 중심으로 할 것인지를 결정해야 한다.프로시저 추상화(procedure abstraction) : 소프트웨어가 무엇을 해야하는지 추상화 - 기능 분해(functional decomposition), 알고리즘 분해(algorithm decomposition)데이터 추상화(data abstraction) : 소프트웨어가 무엇을 알아야하는지 추상화 - 데이터를 중심으로 타입을 추상화(type ..
MySQL - Too many connections java.sql.SQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections" 서버 기동시 MySQL에 커넥션을 맺을 때 발생하는 에러 원인 : MySQL에 설정해둔 max connection 수가 모자라서 발생하는 문제해결책1. root 혹은 어드민 권한을 가진 계정으로 접속해서 set global max_connections = {변경할 커넥션 수}; 를 입력하면 즉시 적용2. my.cnf 파일에 max_connections = {변경할 커넥션 수} 를 입력하고 리스타트
Apache kafka 설치 및 실행 - Mac OS 다운로드공식 홈페이지에 가서 binary file을 다운로드 하고 압축을 푼다. - /https://kafka.apache.org/downloads 카프카 실행주키퍼 서버 실행터미널을 생성해서 카프카 홈에서 주키퍼 서버를 실행한다. - bin/zookeeper-server-start.sh config/zookeeper.properties카프카 서버(Broker) 실행새로운 터미널을 하나 더 생성해서 카프카 서버를 실행한다. - bin/kafka-server-start.sh config/server.properties 토픽(topic)토픽 생성새로운 터미널을 하나 더 생성해서 토픽을 생성한다. - bin/kafka-topics.sh -create -zookeeper localhost:2181 --repli..