1. 유용한 개발 관련 아티클 및 영상 #14 JVM의 init과 cinit 메서드에 대하여 init은 인스턴스의 초기화를 위해 사용되는 메서드 생성자와 초기화 블록은 자바에서 분리되어 있지만 바이트 코드 수준에서는 동일한 인스턴스 초기화 메서드에 해당함 cinit은 클래스 수준으로 무언가를 초기화하기 위해 사용되는 메서드 컴파일할 때 컴파일러는 정적 블록을 바이트코드 수준에서 클래스 초기화 메서드로 변환함 출처: https://www.baeldung.com/jvm-init-clinit-methods?fbclid=IwAR0E_LUFRBNqppJPJ_WzdGkVcCCVz_sVAZ798V26icsdBjqNrpfKcfLI4f0 자바에서 오브젝트 생성 JVM이 인스턴스를 생성한 후에 init을 통해 초기화 메서..
1. 유용한 개발 관련 아티클 및 영상 #13 스타트업에서 4년간 인프라를 운영하며 좋았던/후회하는 (거의) 모든 인프라 결정들 AWS 선택 AWS 대 Google Cloud 선택: AWS를 선택한 것을 지지함. AWS는 고객에 중점을 두고 있음. Google Cloud는 로봇과 자동화에 의존하는 느낌이 있음. EKS: EKS 사용을 지지함. EKS는 AWS 서비스와의 깊은 통합을 제공하며, Kubernetes도 많은 방면에서 따라잡았음(외부dns를 사용하여 Route53과 통합하는 등) EKS 관리형 애드온: EKS 관리형 애드온 사용을 후회함. 설치를 커스터마이즈해야 할 필요가 있었고, helm 차트로 전환한 이후 더 나은 운영을 경험 데이터베이스 및 캐싱 RDS: RDS 사용을 지지함. 데이터는 인..
1. 유용한 개발 관련 아티클 및 영상 #12 Java Process 메모리 추적기 자바 애플리케이션의 힙 사이즈를 1g로 조정(Java Heap = -Xms1g -Xmx1g)해도 프로세스의 메모리 크기는 2g가 넘는 경우가 보임 남은 메모리 사용량은 네이티브 메모리 영역이며, 애플리케이션 실행 과정에서 사용된 정보들이 아닌 압축 해제된 jar 내용들이 메모리에 남아 길을 잃고 있었음 Springboot의 Bug로 ZipInflaterInputStream.close() 가 Native Memory 를 해제하지 못했고 이로 인해 불필요하게 Gb 단위로 메모리를 점유하고 있었음 스프링 부트 레포지토리에 버그로 등록된 건이고, 1.5.16 버전에서 패치됨 출처: https://www.whatap.io/ko/b..
1. 유용한 개발 관련 아티클 및 영상 #11 브랜치 관리를 도와줄 gitbutler 파일들이 각각의 virtual branches에 들어가는 방식으로 브랜치가 관리됨 기존에 깃을 사용하면서 겪었던 리베이스 등의 문제를 혁신적으로 해결해준다고 함 출처: https://twitter.com/BahkChanhee/status/1763080997892198729?s=20 오픈소스 생태계의 명과암 Node.js의 오래된 웹 프레임워크인 Express.js 저장소에 대량으로 스팸 PR이 등록되는 문제가 발생했음 구독자가 486만명인 인기 유튜버가 GitHub에서 Pull Request로 기여하는 방법을 설명하면서 express.js 저장소를 대상으로 설명한게 발단이 되었음 유튜버는 Express.js를 포크해서 ..
1. 유용한 개발 관련 아티클 및 영상 #10 Kubernetes Is Great On-premise(쿠버네티스는 온프레미스에 적합하다) 쿠버네티스는 온프레미스 데이터 센터용 도구에서 탄생했음 쿠버네티스는 Google의 Borg와 Omega의 아이디어에서 탄생함 쿠버네티스가 온프레미스에서 유용한 이유 Fault Tolerance(결함 발생 시에 다른 서버로 이전) Density(리소스 사용률 최적화) 쿠버네티스가 온프레미스에서 갖는 한계 확장 기능이 제한적(클러스터에서 최대 5000개 노드까지만 확장 가능) 쿠버네티스 API는 복잡하고 서버에 있는 것을 관리하기 위해 다른 도구(Terraform, ansinble 등)를 배워야 함 출처: https://codeengineered.com/blog/2024/..