
프록시는 무엇을 의미할까요? 이 질문에 앞서 프록시가 등장하게 된 배경에 대해 먼저 알아보도록 하겠습니다. Proxy 등장 배경 객체는 객체 그래프로 연관된 객체들을 자유롭게 탐색할 수 있습니다. 하지만 데이터베이스 매핑을 하는 엔티티 객체에서는 자유도가 떨어집니다. 연관된 테이블의 데이터를 조회하기 위해서는 JOIN을 사용하여 조회를 진행해야 하기 때문입니다. 자유로운 객체 그래프 탐색의 가능성으로 인해 연관된 모든 테이블을 조회하는 것은 비용이 따릅니다. 실제로 연관된 테이블을 사용하지 않는다면 쓸데없이 JOIN을 하여 조회한 결과를 가져오기 때문입니다. 이 문제를 해결하기 위해 프록시가 등장하게 되었습니다. 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베..

JPA를 공부할 때 영속성 컨텍스트만큼 중요한 개념 중 하나가 연관관계입니다. 객체는 참조를 사용해 다른 객체와 연관관계를 가지고 연관된 객체를 조회합니다. 하지만 테이블은 외래 키를 사용해 다른 테이블과 연관관계를 가지고 조인을 통해 연관된 테이블을 조회합니다. 객체가 테이블처럼 외래 키를 가지도록 설계한다면 객체 지향적인 설계를 포기해야 합니다. 이러한 패러다임의 불일치를 중간에서 해결해 줄 매개체가 필요한데 JPA가 이 역할을 수행합니다. 객체 그래프 탐색 다음과 같은 객체 연관관계가 존재한다고 가정할 때, 연관되어 있으면 참조를 통해 탐색이 보장되어야 합니다. 이를 객체 그래프 탐색이라고 합니다. 아래의 코드의 신뢰성이 보장되어야 함을 의미합니다. Professor professor = unive..

Service Discovery Microservice Architecture에서 각각의 서비스들은 마이크로서비스로 분리되어 있고 IP와 Port로 구분할 수 있습니다. 클라이언트의 요청에 알맞은 서비스를 제공하기 위해 구분된 서비스 정보들을 저장하고 관리하는 관리자 역할을 Service Discovery가 수행합니다. Spring Cloud Netflix 넷플릭스는 MSA로의 전환을 통해 많은 경험을 가지게 되었는데 이 경험을 OSS(Open Source Software)로 공개했습니다. 클라우드 환경에 특화된 프레임워크인 Spring Cloud에도 많은 넷플릭스 OSS가 통합되어 있는데 그 중 Spring Cloud Netflix Eureka에 대해서 알아보고자 합니다. Spring Cloud Net..

JPA SQL 중심적인 개발을 진행하다 보니 다음과 같은 문제를 확인할 수 있었습니다. 반복적이고 지루한 작업 객체와 테이블 사이의 패러다임 불일치 문제를 해결하기 위해 객체를 자바 컬렉션에 저장하듯 DB에 저장할 수 없을까 하는 생각으로 새로운 방법을 찾게 되었고 JPA가 등장하게 되었습니다. JPA(Java Persistence API)는 자바 진영의 ORM 표준 기술로 애플리케이션과 DB 사이에서 동작하게 됩니다. Java 코드로 JPA에 접근하게 되고 JPA는 내부적으로 JDBC API를 이용해 DB에 접근합니다. JPA를 간단히 말하면 인터페이스의 모음입니다. 기존 JPA 없이 JDBC API를 사용할 때는 SQL을 다음과 같이 일일이 작성해야 했습니다. public Member createMe..

클라우드 네이티브 아키텍처의 도입을 위해 애플리케이션은 기본적으로 마이크로서비스 아키텍처의 형태로 개발이 진행되어야 합니다. 그 이유는 클라우드 컴퓨팅 모델의 확장성과 유연함을 잘 살릴 수 있고 유지보수나 변경점을 적용하는 데 있어 훨씬 유리하기 때문입니다. 마이크로서비스 아키텍처가 무엇인지, 해당 아키텍처의 도입이 꼭 필요한지, 필요하다면 어떤 조건을 확인해야 하는지 정리하고자 합니다. Architecture Monolith 초기 애플리케이션의 아키텍처 구조는 하나의 커다란 소프트웨어에 애플리케이션에 필요한 모든 요소를 포함했습니다. 클라이언트에게 보여지는 프론트 로직, 데이터를 담당하는 DB 로직, 실질적인 비즈니스 로직 등 모든 요소가 단 하나의 소프트웨어에 존재하였습니다. 사진에서 확인할 수 있듯..