멀티모듈매핑, 결합도 낮추기
·
Spring
멀티모듈은 서비스 레이어를 더 높은 차원에서, 물리적으로 나눈다는 생각이 든다.그렇기에 의존성을 더 고민하고 나누어 놓을 필요가 있어 보인다😇현재 프로젝트는 도메인 별로 모듈을 나누어 놓은 상태인데 고민의 흔적을 남겨 보고자 한다. 모듈 역할들어가기에 앞서 모듈의 책임/역할에 대해 간략히 정리해 보자. 하나의 도메인에 대해 간략하게 두 개의 모듈로 나누어 두었다.api module외부와의 인터페이스 역할을 하며, HTTP 요청을 처리하고 응답을 반환을 처리domain module비즈니스 로직 및 데이터 모델을 관리데이터 처리를 위한 Repository, Entity 등이 위치하며, 비지니스 로직을 다루기 위한 서비스 레이어도 포함한다. 왜 매핑을 고민할까?결론만 말하면 모듈간 의존성을 낮추고자 하기 ..
[백준] 1052 - 물병(Java)
·
Algorithm
문제 파악https://www.acmicpc.net/problem/1052 어려운 점정답이 없는 경우 -1을 리턴해야 하는데 이 부분을 신경 쓰느라 규칙을 잡는 중요한 부분을 놓친 게 아닌가 싶다.... 사실 -1이 나올 일이 없다 😅풀이주어진 수들을 2진수로 변환하여 풀도록 한다.높이가 1인 컵을 한 개씩 추가할 때 기존 물컵들이 결합하여 변화하는 양상은 이진수의 연산과 닮아있다.이진수로 변환하게 되면 각 자리수의 1은 차 있는 물컵을 나타낸다 예를 들어 높이가 1인 컵의 개수가 5일 경우에 대해 규칙을 알아보도록 하자5 = 101(2) 즉 2개의 컵이 남는다. (높이가 1인 컵 1개, 4인 컵 1개가 남는 형태)현 상태에서 1인 물컵을 더하게 되면 6 = 110(2)로 바뀐다.(높이가 1인 컵 두..
[백준] 1041 - 주사위(Java)
·
Algorithm
문제 파악https://www.acmicpc.net/problem/1041어려운 점주사위의 합을 구하는 규칙이 분명 존재할 것 같은데 생각보다 경우의 수가 적을 것 같아 직접 배열에 선언하는 단순한 방식을 사용했다.이 배열을 만들어주는 게 오히려 어려웠다... 😅풀이한 면, 두 면, 세 면이 보이는 3개의 경우로 나뉜다.하나의 주사위 배치가 다른 주사위에 영향을 미치지 않기 때문에 독립적이라고 볼 수 있겠다.세 경우에서 가장 적은 합을 구해 각 면이 발생하는 개수를 곱해 주면 원하는 값을 구할 수 있다.먼저 각 경우의 발생 개수를 구해보자면한 면 : (N-2) ^ 2 + (N-1)(N-2)*4두 면 : (N-2) * 8 + 4세 면 : 4이 되겠다. 바닥 부분 때문에 개수에 영향이 감에 유의하도록 하..
만들면서 배우는 클린 아키텍쳐
·
Book/DEV
들어가며보통 스프링 프로젝트를 시작하게 되면 계층형 아키텍쳐를 쉽게 채택한다.계층형 아키텍쳐의 대안에 대해 미리 알아두고, 필요할 때 잘 채택할 수 있도록 해당 서적을 읽기 시작했다.나아가 기존 프로젝트의 결합도를 낮출 수 있는 방법에 실습하며 익혀보고자 했다.계층형 아키텍쳐 영속성 계층에 의존하기 때문에 데이터베이스 설계에 의존하게 된다.데이터베이스의 구조를 먼저 생각하고, 이를 토대로 도메인 로직을 구현하게 된다.영속성 개체에 대한 의존성이 높아지면, 개발자들의 병렬(동시) 작업에 어려움이 생길 수 있다.ex) 엔티티의 변경이 발생해 서비스 코드의 변화가 생김 -> merge conflict의존성 역전컴포넌트 사이의 의존성이 생기면 상위 컴포넌트의 변경이 생길 때 마다 하위 컴포턴트의 변경이 불가피..
Apache Kafka (6) - Extended API & Case Study
·
Infra/Kafka
Apache Kafka Series - Learn Apache Kafka for Beginners v3를 수강하며 기록한 내용입니다.Kafka의 확장 기능에 대해 알아보며,이를 어떻게 활용하는 게 좋을 지 몇 가지의 케이스를 통해 알아보도록 한다.Kafka Connect외부 소스와의 연동 : 카프카-카프카 상호연결외부 시스템과 Kafka 간의 데이터 수집 / 전송• Source Connectors: 외부 시스템에서 데이터를 읽어와 Kafka에 넣음.• Sink Connectors: Kafka에서 데이터를 읽어와 외부 시스템에 씀.• Converters: 데이터를 Kafka와 외부 시스템 간에 변환(JSON, Avro 등).• Transforms (SMT): 스트림 데이터를 실시간으로 수정.Kafka St..
Jenkins Slave Node
·
CI & CD
Jenkins Slave Node 를 만들어보자.현재 프리티어 EC2(ubuntu)를 만들어 둔 상태이며, 인바운드는 SSH 정도를 허용해 둔 상태이다.마스터 노드에서 슬레이브 노드로 SSH로 붙어야 하기 때문에 pem 키로 접속하여 기본 설정을 잡아주도록 한다Slave Node Server(EC2) 설정EC2 직접 접속ssh -i my.pem ubuntu@ 기본 설치sudo apt-get upgradesudo apt install openjdk-17-jdk # 원하는 버전 설치 Master가 접근할 디렉토리 생성 및 권한 부여sudo mkdir /home/jenkinssudo chown ubuntu:ubuntu /home/jenkins private key, public key 생성ssh-keyge..