마이크로서비스 아키텍처의 부상: 물리 서버에서 가상 머신, 컨테이너를 거쳐 마이크로서비스 아키텍처가 등장했으며, 이는 모놀리식 애플리케이션을 독립적인 작은 서비스로 분할하여 안정성, 복원력, 수평 확장을 가능하게 합니다. 🚀
클라우드 네이티브의 중요성: 클라우드 네이티브는 클라우드 벤더가 제공하는 기능을 최대한 활용하여 보안, 확장성, 관리 부담을 줄이고 비용을 절감하는 것을 의미합니다. ☁️
전통적인 Java 스택의 한계: 기존 Java 애플리케이션 서버는 느린 시작 시간과 높은 메모리 소비로 마이크로서비스에 부적합했으며, JVM의 JIT 컴파일러 워밍업 시간도 빠른 시작에 걸림돌이었습니다. 🐢
Java의 현대화: Spring Boot, Quarkus, Micronaut 등 마이크로 런타임이 애플리케이션 서버를 대체하고, GraalVM 네이티브 이미지 또는 JVM 벤더의 혁신을 통해 JVM 시작 시간을 단축하여 Java가 마이크로서비스 및 서버리스에 적합하게 발전했습니다. ✨
서버리스 컴퓨팅의 이점: AWS Lambda와 같은 서버리스 함수는 플랫폼이 서비스 시작, 종료, 확장을 관리하여 사용한 만큼만 지불하는(pay-as-you-go) 비용 효율적인 모델을 제공합니다. 💸
데이터 지속성의 복잡성: Java 객체 모델과 관계형/NoSQL 데이터베이스 간의 불일치(impedance mismatch)는 ORM(Hibernate)을 통해 해결되지만, 이는 캐싱, 분산 캐시, 샤딩, 검색 서버, 다중 데이터베이스 시스템 등으로 이어져 아키텍처를 극도로 복잡하게 만들고 클라우드 비용을 폭증시킵니다. 🤯
데이터베이스의 모놀리식 특성: 마이크로서비스 아키텍처를 사용함에도 불구하고 데이터베이스 시스템 자체는 여전히 모놀리식으로 남아있어 확장성 및 관리 측면에서 비효율적입니다. 🧱
Eclipse Store의 등장: Eclipse Store는 이러한 복잡한 데이터 지속성 문제에 대한 대안으로, ORM이나 전통적인 데이터베이스 없이 모든 종류의 객체 그래프를 디스크에 영구적으로 저장할 수 있는 객체 그래프 스토리지 엔진을 제공합니다. 💾
Eclipse Store의 특징: 10년 가까이 개발된 오픈 소스(EPLL 라이선스) 프로젝트로, Maven을 통해 간단히 포함하고 store 메서드 호출만으로 객체를 저장할 수 있어 마이크로서비스에 최적화된 지속성 솔루션을 제시합니다. 🧩