전체 글
-
인텔 N100 미니 PC T9 플러스review 2024. 3. 10. 14:09
알리에서 구매했던 미니 PC T9 플러스입니다. 인텔 알더 레이크 미니 PC, T9 플러스 에서 구매했습니다. 이전에 알리 미니 PC와 모니터암 에서 AMD 7530u를 사용하는 GenMachine을 구매했었는데 해당 PC의 경우는 Desktop 용도로 나름 성능은 괜찮았지만 소음이 조금 있었습니다. Windows에서 절전모드로 설정했을 때에는 그럭저럭 쓸 만 하긴 했네요. 이번에는 Home Server 용도의 인텔 NUC machine을 대체하는 용도로 구매했는데 소음이나 성능 모두 만족할 만 합니다. 다른 미니 PC와는 다르게 특이하게도 DDR5를 지원해서 선택을 해 보았는데 설정에 어려움은 없네요. 다만 노트북에서 사용하는 2242 크기의 SSD만 지원하는데, 2242는 사용자에게 Retail로 판..
-
Cloud Native Spring Log4j Loggingdevelop 2024. 3. 3. 13:18
Cloud Native에서 Bible처럼 이야기되는 12 Factor App은 훌륭한 가이드이긴 한데, 실제 서비스를 개발 할 때에 전부를 지키지는 않고 있습니다. 그 중에서 거의 지키는 경우를 못 본 것으로 Log를 File로 남기지 말고 Event Stream으로 간주해서 Console Output으로 보내라는 부분입니다. Spring으로 개발 할 때에 왜 저런 것을 지키지 않는지, 특히 Logging을 처리하는 Log4j에서는 어떻게 이야기하는지를 확인 해 보았습니다. ref: Log4j – Using Log4j in Cloud Enabled Applications (apache.org)
-
REST API design guidedevelop 2024. 2. 12. 14:30
REST API Design 가이드는 REST API Design Guidance - Code With Engineering Playbook 같은 훌륭한 Article이 있습니다만, REST 가이드를 잘 유지하는 게 힘든지 아니면 Graph API 등의 트렌드와 맞지 않는지 해당 가이드는 Deprecate 되었네요. 대신에 다음과 같은 Azure의 가이드들이 일부 대체합니다. 웹 API 디자인 모범 사례 - Azure Architecture Center | Microsoft Learn api-guidelines/azure/Guidelines.md at vNext · microsoft/api-guidelines · GitHub 실제로 개발자들의 API를 리뷰 해 보면 단지 CRUD를 위해서 POST/GET..
-
알리 미니 PC와 모니터암review 2023. 11. 11. 20:07
알리에서 AMD 7530u를 사용하는 GenMachine을 구매했습니다. 이왕이면 병이 걸려서 Cruciual 1T NVME SSD, 32G RAM, Intel AX210 무선 LAN카드 교체 등 원래 가격보다 훨씬 더 질렀네요. 정작 다 셋업을 했더니 자녀 방으로 직행하게 되었는데 책상에 공간 여유가 없네요. 고민하다가 모니터암을 설치해서 있는 공간에서 최대한 효율적으로 배치 해 보았습니다. 모니터암은 고민하다 입문용 가성비로 많이 추천하는 노스바유의 NB F100A으로 결정했는데, 책상 왼쪽에 배치해도 다행히 큰 문제 없었습니다.
-
Micrometer Meter 관련 성능 이슈develop 2023. 10. 28. 22:56
Micrometer를 통한 metrics을 관리하고 있는데, Profiling 시 가장 많은 CPU를 소모하고 있어서 분석을 해 보았습니다. meterRegistry.find("testMetricName").timer(); 문제되는 코드인데, meterRegistry에서 단순 조회를 한다고 생각했는데 MeterRegistry.find()의 내부 구현은 다음과 같습니다. Class MicrometerRegistry { public Search find(String name) { return Search.in(this).name(name); } } class Search { public Timer timer() { return findOne(Timer.class); } private M findOne(Cla..
-
Kubernetes에서 node 내 thread 분리 이슈develop 2023. 8. 20. 16:01
AWS EKS를 이용해서 Kubernetes 환경에서 서비스를 하는데, 갑자기 새벽 3시에 계속 서비스의 FD (File Descriptor)가 9,000 개 이상 차면서 서비스가 정상적으로 동작하지 않았습니다. 문제가 발생할 때에 다음의 증상이 있었습니다. File Descriptor가 9,000개 이상 차면서 외부 응답에 제대로 대응하지 못했습니다. Kubernetes에서 Node is not ready 상태에 빠졌다가 돌아오는 것을 반복했습니다. Node가 문제인가 해서 보았는데, Node에서 메모리 할당이 급격히 늘었습니다. 직접적인 원인으로 Application 에서는 native thread 생성 실패가 발생하고, 이 이후에 Kubernetes의 pod가 비정상인데도 계속 Traffic을 받고..
-
Ref: Sync 10,000 Argo CD Applications in One Shotdevelop 2023. 6. 29. 23:30
최근에 spinnaker에서 argocd로 kubernetes ci cd 환경을 이전했는데 배포가 너무 오래걸리네요. https://itnext.io/sync-10-000-argo-cd-applications-in-one-shot-bfcda04abe5b Sync 10,000 Argo CD Applications in One Shot A quantitative study on Argo CD scalability itnext.io 에 배포 최적화 관련 좋은 내용이 있어서 도움이 되었습니다.
-
Spring Cloud Configdevelop 2023. 5. 1. 08:37
Spring 환경에서 여러 환경 별 설정을 관리하기 위해서 Spring Cloud Config 를 사용하면 여러 장점이 있습니다. 중앙화된 하나의 한경에서 설정을 한꺼번에 관리한다던가, Spring Boot Actuator의 refresh endpoint를 이용해서 서비스 배포 없이 Bean을 재설정 할 수 있습니다. 하지만 Spring Cloud Config도 Kubernetes의 환경에서 대체되는 기능이 되었고, Cloud Native에서는 더 좋은 방법이 존재합니다. Kubernetes Configuration Management Options (exoscale.com) Chapter 11. Integrating Spring Boot with Kubernetes Red Hat Fuse 7.10 | ..