예시 코드는 여길 참조해주세요. https://github.com/KimDoubleB/spring-learning/tree/master/junit5/tag Tag JUnit5에서는 Tag 어노테이션을 제공하고 있습니다. Overview Tag는 어떤 기능을 하는 어노테이션일까요? 공식문서에 의하면 다음과 같습니다. Tags are a JUnit Platform concept for marking and filtering tests. The programming model for adding tags to containers and tests is defined by the testing framework. For example, in JUnit Jupiter based tests, the @Tag ann..
해당 글은 Kubernetes 공식문서 Garbage Collection를 토대로 작성한 글입니다. 조금 쉽게 표현하고자 추상적으로 표현한 부분들이 있는데, 자세한 내용은 공식문서를 참조해주세요. 쿠버네티스에서 일부 리소스들은 다른 특정 리소스로 하여금 만들어져 운영되는 경우가 있습니다. 다시 말해서, 특정 리소스가 일부 리소스의 owner 일 수 있고, 이러한 owner 리소스에 대해 일부 리소스가 dependents 리소스 일 수 있습니다. 즉, 리소스 간에 종속적인 관계가 존재할 수 있는 것입니다. 예를 들면, ReplicaSet 은 여러 Pod 들의 owner 라고 말할 수 있을 겁니다. 또한, 이 Pod 들은 ReplicaSet 에 대해 dependents 리소스라고 할 수 있겠죠. Owner ..
Sealed-secrets는 gitops를 사용한다면 보안적으로 필수적?이라고 생각하는 요소다. Private repo여도 비밀번호 같은 정보가 base64로 아무나 디코딩 가능한 형태의 Secret manifest 형태로 올라간다면 보안적으로 불완전한 요소일 수 있다. 여기서 Sealed-secrets을 사용하면 더 안전히 gitops 형태로 이끌어 갈 수 있다고 생각한다. - 관련되어 개념을 모른다면 커피고래님의 블로그 관련 글이 설명이 잘 되어있다. 배포하기 이전에 로컬에서 테스트를 자주 해야하는 상황이 오는데, 맨날 하는 것이 아니다보니 할 때마다 사소한 오류들이 생겨서 그냥 정리해둔다. 준비사항 # repo 추가 helm install sealed-secrets sealed-secrets/sea..
Spring boot 웹 서버를 개발하고 Kubernetes에 배포할 때, Profile(local, dev, prd, ...)을 설정하는 법을 알아보자. Dockerfile을 사용해 컨테이너 이미지 빌드 Dockerfile을 통해 이미지 빌드 시, ENTRYPOINT에서 Jar 파일을 실행하며 Dspring.profiles.active 옵션을 통해 설정할 수 있다. ... ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "some.jar"] 해당 컨테이너 이미지를 실행시키면, dev profile로 설정되어 Spring boot 웹 서버가 실행된다. Buildpacks(ex. gradle bootBuildImage)를 통해 컨테이너 이미지 빌드..
클린 아키텍처, 마이크로 서비스 패턴 책을 읽으면서 Command, Query Class들이 나왔는데, 무슨 차이며 어떤 역할이길래 이런 이름(Suffix)으로 네이밍했을까 궁금했다. 근데 책에서 나와있길래 짧게 적어본다. - Command (커맨드, 명령): 데이터 생성/수정/삭제(CUD) 시에 사용 - Query (쿼리, 조회): 데이터 읽기(R) 시에 사용 개발 상에서 많이 사용되던 단어다보니 의미를 생각하지 않아서 이해가 잘 안되던 것이었는데, 단어의 본래 의미와 한국어 해석을 보면 이해가 간다. 결국, 데이터를 생성/수정/삭제하는 CUD 작업과 관련이 되어있다면 Command Suffix가 붙은 네이밍을 사용하고, 데이터를 조회하는 R 작업과 관련이 되어 있다면 Query Suffix가 붙은 네..
Consistent hashing은 Hashing을 일관되게 유지하는 방법이다. 이게 뭐다 라고 설명하기 보단, 먼저 상황을 예시로 들어보자. 노드 3개에 데이터를 분산 저장하는 상황이 있다. 제일 쉬우면서 분산저장하는 법은 데이터의 특정 값(이름 등)을 이용해 Hashing 결과 값을 구하고, 해당 값의 node로 배치하는 법이 있다. 수식으로 나타낸다면 hash(data-key) % 3 으로 데이터가 저장되는 노드 번호를 구할 수 있을 것이다. 이러한 예시에서 노드의 수가 세상이 끝날 때까지 변함이 없다는게 보장된다면 문제 없이 동작할 수 있다. 하지만 역시나 그럴 확률은 적다. 주변 환경에 따라, 유저의 수가 증감함에 따라, 회사/서비스의 상황에 따라 분산저장 노드의 개수는 변할 수 있고, 그렇게 ..
`만들면서 배우는 클린 아키텍처` 책을 보면서 헥사고날 아키텍처 구조에 대해 학습하고 있다. 기존까지는 생각하지 못했던, 또한 패키지나 구조에 대해 잘 몰라 '이렇게 하는게 맞나'하면서 고민했던 것들이 좀 풀려나가는 것 같다. 이 글에서는 학습하며 배웠던 패키지 구조와 간단 아키텍처를 백업용으로 작성하고자 한다. 패키지 구조 책에서는 adapter, application, domain을 주 패키지로 잡고, 내부적으로 port, in, out 등의 부 패키지로 구성하고 있다. com.binux.server ├── BinuxApplication.java ├── BinuxConfiguration.java ├── BinuxConfigurationProperties.java ├── account │ ├── ada..
- Total
- Today
- Yesterday
- boj
- OpenTelemetry
- 로그
- 클린 아키텍처
- gradle
- container
- MySQL
- Intellij
- 알고리즘
- 비동기
- WebFlux
- tag
- Clean Architecture
- Istio
- HTTP
- docker
- 일상
- 쿠버네티스
- c++
- 하루
- jasync
- Log
- Spring boot
- java
- Spring
- Algorithm
- Kubernetes
- 백준
- k8s
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |