
개요 "자바 인터페이스(Java Interface)는 무엇인가?" 이런 궁금점을 가지고 있는 Java Programmer가 많습니다. 저는 "객체 지향 개발 5대 원칙 - SOLID"을 만족시켜줄 수 있어서라고 생각합니다. 그러면 "왜 SOLID를 만족시켜야 하는가?"라는 질문을 가지게 됩니다. 서비스 애플리케이션의 라이프사이클을 "설계 / 개발 / 유지보수" 세 단계로 나누면, 유지보수가 소프트웨어 라이프사이클에서 가장 큰 부분을 차지합니다. 유지보수에서 인터페이스(interface)는 SOLID를 구현하고, 객체 지향 개발을 하는데 큰 도움을 줍니다. "설계 / 개발 / 유지보수" 관점에서 객체 지향을 설명하면, 다음과 같은 장점이 있습니다. 객체 지향 사용하여, 대상을 추상화를 하고, 추상화된 대상..

개요AWS RDS Proxy은 "DB Connection Pool Management" 또는 "Automatic Failover를 위한 Proxy" 기능을 제공합니다. 결국, AWS RDS Proxy를 사용하는 이유는 HA(High Availability)를 구현하기 위함입니다. Solution을 사용하기 앞서서, HA(High Availability)를 위한 Multi-AZ(Multi Availability Zone) 개념을 시작으로 이야기를 풀어가보겠습니다. RDS는 HA(High Availability)를 위해서 Multi-AZ(Multi Availability Zone)를 권장합니다. Downtime 없는 DB Instance를 사용하기 위함입니다. Multi-AZ를 통한 DB 구성과 Applic..

이야기에 앞서서... Spring Framework에서 제공하는 @Autowired나 @Qualifier를 이용해서 객체를 찾아서 DI(Dependency Injection)해왔습니다. 물론 Java에서도 @Inject, @Resource를 제공해주어서 DI(Dependency Injection)를 할 수 있었습니다. 우선, DI는 IoC(Inversion of Control)의 핵심 원리를 구현하는 개념이라고 할 수 있습니다. 간단하게 IoC(Inversion of Control)란? : IoC의 핵심은 기존의 Programing code 안에 들어가 있던 객체의 생성/관리를 Spring Container에게 위임하여 객체의 생명주기를 관리하게 하는 것입니다. 관리하는 객체의 단위를 Bean이라고 명명..

애플리케이션을 개발하다 보면, 보통 @Transactional을 사용해서 Transaction을 사용합니다. 관습적으로 사용하다 보니, 내부적으로 어떻게 돌아가는지 원리에 대해서만 관심을 가졌습니다. 하지만 여기에서는 조금 더 들어가서 살펴보려고 합니다. Transaction은 두 가지 형태로 구현할 수 있습니다. Programmatic Transaction 방식 : 직접 코드에서 Transaction을 구현하는 방식 Declarative Transaction 방식 : 원하는 Scope에서 Annotation을 선언하는 방식 여기서 이야기하려고 하는 주제는 2.Declarative Transaction방식입니다. 여기서 다시 "2.Declarative Transaction"의 종류는 다음 두 가지로 나뉩..