개발/ETC 7

Docker / Buildkit 에서 SOURCE_DATE_EPOCH와 rewrite-timestamp 설정

Docker / Buildkit 에서 SOURCE_DATE_EPOCH와 rewrite-timestamp 설정 컨테이너 이미지를 빌드하는 과정에서 동일한 이미지 레이어 구성을 가졌음에도 불구하고 빌드 캐시를 활용하지 않는 경우, 최종 이미지의 해시값이 매번 변경되는 현상이 발생한다. 이러한 변화는 이미지 매니페스트와 각 빌드 단계에서 생성되는 레이어에 현재 빌드 시간이 포함되어 있기 때문으로, 캐시를 재활용하지 않을 경우 동일한 컨텍스트, 소스, 도커파일이라 하더라도 매번 다른 이미지가 생성된다. 기술적 배경을 살펴보면, 도커파일 내에서 apt와 같은 패키지 매니저를 통해 원격 설치를 진행하는 경우, 매 호출 시 동일한 명령어로 이미지를 구성하더라도 실제 파일 시스템에는 변경 사항이 발생할 수 있어 이와 ..

개발/ETC 2024.03.13

ElasticSearch Data Stream 주의사항

왜인지 문서를 정확히 찾지 못했으나, 일반 Index Template의 경우 date_detection이 기본으로 true이나, ElasticSearch Managed Component Template에 data-streams-mappings에 date_detection: false로 설정되어있어, data stream으로 데이터를 인덱싱 할 경우 ISO와 같은 DateTime 필드를 dynamic mapping 할 때 keyword로 매핑되는 문제가 발생한다. 위 컴포넌트의 date_detection을 수정한 다음 다시 인덱싱 해야하는 불편함이 있다. 벤치마크 성능 문제 때문인가... 너무하는거 아니냐고...

개발/ETC 2023.11.02

Windows 11 에서 Hyper-V 사용시 External Switch 문제 발생 및 해결 과정

Windows 10에서 11로 업그레이드 후 잘 사용하던 Hyper-V 우분투 이미지에서 이더넷 연결이 되지 않고 인터넷도 연결되지 않게 되었다. 우선 Mac이 변경된것을 확인하여 공유기의 DHCP에 Mac 할당을 변경해주고 다시 netplan apply 등을 해보았으나 연결이 되지 않았다. netplan의 Address 설정을 제거하고 DHCP4: true를 주고 재시도 해보았으나 여전히 되지 않았다. 하도 이상해서 검색을 좀 해보다가 Windows11 22H2 업데이트 이후 External Switch에 문제가 있다는 스레드를 발견했다. https://learn.microsoft.com/en-us/answers/questions/881974/windows-11-22h2-broke-custom-virt..

개발/ETC 2022.09.22

Angular에서 Monaco Editor를 사용할 때 커스텀 언어 워커 사용하기

Angular (여기선 13.0)를 사용할 때 Monaco Editor를 쓰는 방법이 몇가지 있는데 편의를 위해 ngx-monaco-editor 와 같은 모나코 래핑 컴포넌트를 사용하면 편한데, 여기에 더해 커스텀 언어용 워커를 사용하고자 한다면 의외로 꽤 고생할만한 포인트가 있어 정리해둡니다. 저의 경우 monaco yaml 에디터에 JSONSchema를 사용할 수 있게 해주는 monaco-yaml 워커를 활성화 시켰으므로 이 기준으로 설명합니다. 다른 언어 워커를 사용하는 경우 monaco-yaml 부분만 교체하면 대동소이 합니다. monaco를 amd 번들링으로 로드하는 ngx-monaco-editor를 그냥 쓰거나 별도로 vs/min 경로나 CDN등에서 monaco-editor를 가져오는 경우 E..

개발/ETC 2022.06.25

AI, ML, 머신러닝, 딥러닝의 한계에 대한 생각

게리 마커스의 딥러닝의 한계 (https://nautil.us/deep-learning-is-hitting-a-wall-14467/)에 대한 글을 보고 제가 실무에서 딥러닝 모델을 사용하는 서비스를 개발하며 겪은 AI와 머신러닝에 대해 이야기 해보려고 합니다. AI와 머신러닝을 배우는 사람, 무엇인지 알고있는 사람은 이 딥러닝에 대해 엄청난 기대감을 가지게 됩니다. 그럴 수밖에 없는 것이 이것은 마치 사람처럼, 어떨 때는 사람이 놓친 부분들에 대해 사람보다 뛰어나게 판단을 해주기 때문에 곧바로 이것을 쓰면 내가 봉착해있는 어떤 문제에 대한 솔루션을 이 딥러닝 학습된 AI를 적용하면 뭐든 해결될 것 같은 희망을 보기 때문입니다. 그러나 실제 현장에서 실무에 딥러닝 AI를 넣는 것은 생각보다 제한적이며 어렵..

개발/ETC 2022.03.12

JAVA Log4J2 취약점 - CVE-2021-44228

JAVA에서 굉장히 흔하게 사용하는 Log4J2에 크리티컬한 취약점이 발견되었다. Steam, AWS, Apple 등 거의 대부분의 자바를 사용하는 웹서버가 취약점에 노출되었으며, 실행 난이도가 너무 쉬워서 파급력이 상상을 초월할 지경이다. RIP... https://www.lunasec.io/docs/blog/log4j-zero-day/ RCE 0-day exploit found in log4j, a popular Java logging package | LunaSec Given how ubiquitous this library is, the impact of this vulnerability is quite severe. Learn how to patch it, why it's bad, and mor..

개발/ETC 2021.12.11

Backend System Architecture 구성 경험담 정리

대규모, 특히 글로벌 서비스 규모나 그 규모로 확장이 예상될때 시스템 플랫폼에 어떤 장비나 오픈소스, 상용 서비스를 검토하면 좋은 선택이 될 수 있는가에 대한 선택과 사용 경험을 정리해 보려고 합니다. 주로 Kubernetes에서 운영되는 것과 AWS 서비스로 경험하였기 때문에 이것들 위주로 정리했습니다. 여기 나열된 것은 정답지가 아닙니다. 100가지 상황에는 100가지 해답이 있다고 생각합니다. Container Orchestration Kubernetes 대규모 서비스의 인프라는 현재 쿠버네티스 이외의 선택지가 존재하지 않습니다. AWS의 경우 EKS, Azure는 AKS, Google의 경우 GKE를 사용하면 됩니다. 온프레미스로 직접 구축하는 경우... 글로벌 서비스를 이걸로 할 생각 하는 거면..

개발/ETC 2021.09.02