전체 글 썸네일형 리스트형 [Architecture]헥사고날 아키텍처(port and adapter) 새로운 아키텍처를 도입하면서, 학습한 내용을 정리했습니다. 학습 시작 서적은 접근하기 쉬운 두께를 가졌으면서, 아키텍처에 대해서만 다루고 있는 '만들면서 배우는 클린 아키텍처' 서적으로 시작했습니다. http://www.yes24.com/Product/Goods/105138479 계층형 아키텍처의 문제점 계층형 아키텍처는 데이터베이스 주도 설계를 유도 데이터베이스의 구조를 먼저 생각하고, 이를 토대로 도메인 로직을 구현, 이는 의존성 방향에 따라 자연스럽게 구현한 것이지만 비즈니스 관점에선 전혀 맞지 않는 방법 데이터베이스 중심적인 아키텍처가 만들어지는 가장 큰 원인은 ORM 프레임워크를 사용하기 때문에 영속성 계층과 도메인 계층에 강한 결합 지름길을 택하기 쉬워진다 전통적인 계층형 아키텍처에서 전체적으.. 더보기 private method Test 테스트 코드를 작성하다 보니 private method를 호출하여 사용할 상황이 생겼습니다. 테스트를 위해 해당 메소드를 public으로 바꿀 순 없어, 방법을 찾아보다 보니 reflect를 이용한 테스트 방법이 있었습니다. 위와 같이 private 변수는 reflect의 Field 값으로, private 메소드는 reflect의 Metho 값으로 호출하여 사용할 수 있습니다. 하지만, 내부 동작이 노출되는 것은 단일 책임 원칙(SRP, Single Responsibility Principle)에 위배되어 권장하지 않습니다. 참고: https://nowonbun.tistory.com/519 더보기 [Jenkins] Git, Bitbucket 연동 젠킨스를 설치했으니, 이제 깃과 연동을 해야하는데요. 우선 저는 Bitbucket을 사용하고 있어, Git은 간단하게 설명하고, 참고했던 블로그를 남겨두고 넘어가겠습니다. Git [Jenkins 관리] > [System Configuration] > [Global Tool Configuration]에 진입합니다. 아래와 같이 JDK, Gradle경로를 설정할 수 있습니다. 또는 인스톨러를 통해서 설치할 수도 있는데, 자바의 경우 오라클 계정을 입력해야 설치가 가능합니다. 예전 버전에서는 Open JDK를 다운받을 수 있었던 것 같은데, 오라클 JDK밖에 설치가 안되는 것 같더라구요. 그리고 이제 Git정보를 입력하면 연동이 됩니다. 그 전에 Git에서 토큰을 생성해야하는데요. 해당 정보는 아래 블로그에서.. 더보기 [Jenkins] 설치 - Linux 신규 서버에 Jenkins를 설치할 일이 있어서 설치하는 김에 포스팅도 하려고 합니다. 우선 서버는 Red Hat 4.8.5-16의 OS가 설치된 서버입니다. 1. git 설치 $ sudo yum install git 2. Jenkins 설치 wget으로 우선 jenkins.repo를 내려받습니다. $ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo 그리고 yum으로 설치하기 위해 key를 등록 후 설치를 진행합니다. $ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key $ sudo yum install jenki.. 더보기 Cloud Native Application 고려사항 HeroKu에서 만든 12개의 고려사항에 대한 정리입니다. https://12factor.net/ Base Code 버전 제어 형상 관리 코드를 한 곳에서 배포(CI/CD) Dependency Isolation 각 마이크로 서비스는 각 종속성을 가지고 있어 전체 시스템에 영향도가 없어야함 Configurations 코드 외부에서 마이크로 서비스에 필요한 작업 제공 필요 하드 코딩 된 설정 분리 Linkable Backing Services DB, Caching, Broker(Kafka, MQ) 등 이용 리소스를 분리하여 서로 상호가능한 서비스 운영 Stages Of Creation 빌드, 릴리즈, 실행환경 분리 Stateless Processes 분리되어 독립적으로 실행 가능한 서비스여야 함 Port B.. 더보기 Gradle Multi Module 프로젝트 생성 멀티 그래들 프로젝트를 만들 때, 보통 root의 build.gradle에 공통되는 부분만 추출하고 각 모듈별로 build.gradle을 따로 만들어 사용했습니다. 그러다 보니 각 모듈별로 관리할 부분이 늘어 불편함을 느꼈고, 관리 포인트를 하나로 모으기 위해 build.gradle을 통합 시켰습니다. 각 모듈에는 gradle파일을 제거하고 소스 파일(src하위 디렉토리)만 두고, root의 build.gradle에 아래와 같이 공통 설정을 했습니다. subprojects에서는 plugins를 사용할 수 없기 때문에 apply로 적용해야합니다. - root/ build.gradle 그리고 각 모듈 별로 root의 build.gradle에 추가합니다. 위 모듈 중 common은 공통 기능을 추출 한 것으로.. 더보기 Spring Cloud API Gateway 신규 프로젝트를 진행하며 스프링 클라우드를 사용하기 위해 학습한 내용입니다. API Gateway (Spring cloud gateway) Gateway Handler Mapping / Web Handler Gateway Handler Mapping 사전에 설정한 클라이언트의 URL과 내부적으로 라우팅 할 URL들을 매칭시키는 역할 (경로와 일치하는지 판단) 특정 predicates 로 요청이 오면 특정 uri 로 변환해주는 역할 Gateway WebHandler 요청 경로에 따른 Filter Chain을 찾아 요청을 전송 Filters Filter는 AbstractGatewayFilterFactory 를 상속받아 구현하며 아래 필터들은 기본 제공이 아닌 구현해야하는 구현체 Global Filter 를 .. 더보기 [탐색알고리즘] DFS halfstorage.tistory.com/84 [탐색알고리즘] 깊이 우선 탐색, 너비 우선 탐색 깊이 우선 탐색(depth-first search, DFS)은 부모노드부터 왼쪽부터 자식노드가 없을 때까지 탐색하고 탐색하려는 값이 없으면 루트의 다음 자식 노드를 탐색합니다. 장점 단지 현 경로상의 노드들만 halfstorage.tistory.com 이전에 포스팅 했던 탐색알고리즘 중 깊이 우선 탐색 알고리즘에 대해 포스팅하려고합니다. 우선 알고리즘 문제는 NHN 채용사이트에서 공개된 Pre-Test 문제를 참고했습니다. 문제가 된다면 다른 알고리즘 문제로 대체하도록 하겠습니다. 문제출처: https://recruit.nhn.com/pdf/%ED%94%84%EB%A6%AC%ED%85%8C%EC%8A%A4%.. 더보기 이전 1 2 3 4 ··· 9 다음