앞선 글에서 package 구조, Java access modifier 그리고 ArchUnit을 통해 Hexagonal Architecture를 구현해보았다.마지막에 " [1] 개발 중엔 아직 실수할 수 있다, [2] 테스트를 수행하지 않는다면기존의 문제점은 계속해서 발생한다." 문제점들을 이야기했는데이번 글에서는 멀티모듈, JPMS, Kotlin을 이용해서 이 문제들을 해결해보고자 한다. 3. Multi module (멀티모듈)로 구현하기 Chapter 02: Multi module by KimDoubleB · Pull Request #2 · KimDoubleB/clean-architecture-example github.com 결국 ArchUnit으로는 잘못된 의존을 막을 수 있는데 큰 도움이 되..
서버 개발자들간에는 논쟁이 일어날 수 있는 주제가 여러가지가 있다.그 중 대표적인 두 가지를 뽑자면 “Monolithic과 MSA”이고, 나머지 하나가 오늘 이야기 할 “Clean/Hexagonal Architecture”이다. 나는 보통 애플리케이션/프로젝트를 구성할 때 별 다른 고민없이 Layered Architecture로 구성해왔다.그러는데는 아주 지극히 개인적인 여러 이유가 있다.익숙하다. 나에게도 익숙하고, 남에게도 익숙하다. 러닝커브가 낮아 누가와도 개발할 수 있다.개발이 빠르다. 익숙해서 개발이 빠른 것도 있지만, 계층별로만 역할이 나뉘고 의존성/구현 방향이 단순해 생성되는 클래스/파일의 양이 적어 결과물을 보기까지 개발속도가 빠르다.Layered Architecture 구조의 단점이 와..
Kent beck 켄트 백 켄트 벡 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전.ko.wikipedia.org 켄트 벡이라는 이름은 개발자들 사이에서 큰 영향력을 지니고 있다.XP(익스트림 프로그래밍)와 TDD(테스트 주도 개발) 등을 창안하고 이를 널리 전파하여 수많은 개발자들에게 지대한 영향을 미쳤기 때문이다. 많은 개발자들이 그를 멘토이자 영웅으로 여긴다. 하지만 나는 그의 이론과 책을 많이 접하지 않은 사람으로 거리감이 있다. XP와 TDD가 차차 알려지던 시절의 개발자들에게는 더 큰 의미로 다가왔겠지만 말이다.한 번 쯤 그의 책을 읽어보고 배워보고 싶다는 생각은 있었지만, 오래된 책들을 책장에서 찾아 읽어보기는 쉽지 않았다. 하지만 새로운 책을 구매해 펼치는 것은 쉽지 않은..
[GPT-4를 활용한 인공지능 앱 개발]을 읽고 GPT/LLM에 대한 관심 ChatGPT가 공개되고 많이 사용되면서 여러 창의적인 서비스들이 등장했다. 무언가 익숙한 것들을 반복해 만들어내던 생태계에 GPT/LLM 한 스푼 넣음으로서 다채로워진 것 같다고 느꼈다. 더 나아가 유저 뿐 아니라 개발자들의 경험(DX) 측면에서도 많은 영향을 주었다. 코드 생성 및 리뷰, 기능 찾기, 커밋 메시지 생성기 등 개발 과정에 있어 사소한 부분부터 '이게 가능해?'라는 부분까지 말이다. 그렇기에 내 개발 패턴에 맞게 GPT/LLM을 이용한 서비스를 만들어봐야지 라는 생각을 시간 날때마다 했던 것 같다. 나만의 '개발해볼만한 것' 목록을 작성할 때마다 맨날 들어가있는 녀석이다. 하지만 실상 개발하기는 어려웠다. 내부 개..
서비스 메시 (Service Mesh)? Mesh ? 이름 그대로의 역할 네트워크 전체에서 흩뿌려져 내부 동작을 손쉽게 제어 서비스 라우팅, 로드밸런싱, 텔레메트리에 대한 아이디어를 재구성 Kubernetes 이전? 관련된 기능을 특정 언어의 라이브러리로 제공했음 (물론 지금도 사용하는 곳도 많음) 무엇이 있었나? Scala - finagle Java - Netflix OSS (hystrix, ribbon), Spring cloud 만약 다른 언어에서 사용하고 싶다면? 사용할 수 없다. 해당 언어에서만 사용이 가능함. 해당 언어 애플리케이션에서 사용할 땐 의존성이 생기는 문제 단순히 import dependency가 아닌 애플리케이션 비즈니스 코드 내부로 깊게 침투해져 있는 경우가 많았다. 만약 이걸 때..
개요 서비스 (East-West) 파드 집합을 단일 유닛 또는 네트워크 서비스로 취급 로드밸런싱/라우팅. 서비스 검색 매커니즘. 레이어 3/4 매커니즘 인그레스 (North-South) 클러스터에서 실행되는 워크로드에 대한 진입점 세분화 된 트래픽 라우팅. 레이어7 로드밸런싱. 서비스 메시 더 진보된 라우팅, 보안, Observability 제공 East-West, North-South 지원 애플리케이션 소스코드 변경없이 Proxy/Sidecar를 이용한 통신 Kubernetes Service 여러 파드에서 걸쳐 트래픽을 로드밸런싱 하는 쿠버네티스의 핵심 API L3/L4 Layer load balancing -> TCP/IP, Port/IP 워크로드/파드는 대체 가능한 특성이기에 IP 대신 서비스를 이..
Javascript ? 신이 찾아와 개발자인 당신에게 평생 한 프로그래밍 언어만 사용할 수 있다고 한다면, 어떤 언어를 고르겠는가? 백엔드 개발자로서 자바민국(요즘은 코틀린민국이 되가고 있는 것 같긴 하다만)에선 Java를 골라야지 싶기도 하지만, 나는 무조건 Javascript를 고르겠다. 무언가를 만들어낸다는 행복과 뿌듯함을 바라보고 온 직업인데, 한 측면에 집중된 언어보단 여러 곳에서 메인 언어로 선택될 수 있는 녀석을 선택하겠다. 그리고 개인적으로 평생 Java나 해라는 욕같다 그냥. 평생 Javascript나 해라는 욕같은 느낌이 덜하다. Javascript의 생태계는 정말 끝이 없는 것 같다. 단순히 Web Frontend를 넘어 Backend 영역을 넘어서 App Frontend까지 넘기 시..
Secret에 대해 알아보기 전에 Secret이란 애플리케이션이 비밀로 유지하려는 데이터 더 쉽게 말하면 애플리케이션 서비스에서 필요한 비밀 데이터 ex) secret token, password, ... 다음과 같은 운영상의 문제를 고려해야 함 시크릿 순환 정책/키 (암호화) 순환 정책 시크릿의 순환 주기는 어떻게 결정할 것인가? 암호화 키의 순환 주기는 어떻게 결정할 것인가? 시크릿 저장 정책 시크릿 데이터를 저장할 때 어떤 요구사항을 충족해야 하는가? 격리된 하드웨어에 시크릿을 유지해야 하는가? 개선 계획 시크릿 또는 암호화 키가 손상되었을 때 어떻게 해결할 것인가? 애플리케이션에 영향주지 않고 계획 및 자동화를 실행할 수 있는가? 시크릿 관리를 어떤 레이어에서 제공할지 결정도 필요함 쿠버네티스 단..
- Total
- Today
- Yesterday
- OpenTelemetry
- gradle
- 클린 아키텍처
- 로그
- 하루
- 비동기
- boj
- 백준
- python
- Kubernetes
- WebFlux
- docker
- Intellij
- 쿠버네티스
- jasync
- Istio
- Spring boot
- 알고리즘
- k8s
- Clean Architecture
- container
- Log
- java
- 일상
- c++
- HTTP
- Algorithm
- tag
- Spring
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |