💡Agile 방법론 애자일(Agile) 방법론은 소프트웨어 개발 방법 중 하나이다. 신속한 반복 작업을 통해 소프트웨어를 개발하고 지속적으로 제공하는 방법으로, 고객 요구 사항의 변화에 대해 유연하고 빠르게 대응하는 민첩한(Agile) 개발 방법이다. ✔️ Agile 특징 프로세스나 툴보다 개인과 개인간의 상호작용이 우선이다. 포괄적인 문서보다 동작하는 소프트웨어가 우선이다. 계약 협상보다 고객과의 협업이 우선이다. 계획을 따르는 것보다 변화에 대응하는 것이 우선이다. Agile 방법론에는 스크럼(Scrum)과 칸반(Kanban)이 있다. 본 포스팅에서는 스크럼에 대해 자세히 알아보려고 한다. 💡 스크럼(Scrum)이란? 애자일(Agile) 소프트웨어 개발 방법론 중 하나로, 프로젝트를 진행할 때 유연성..
들어가기 SQL에는 표준 ANSI SQL이 존재하고, DBMS Vendor(공급 업체)인 MS-SQL, Oracle, MySQL, PostgreSQL에서 제공하는 각각의 고유한 SQL이 존재한다. ANSI SQL은 모든 DBMS에서 공통적으로 사용 가능한 표준 SQL이지만, DBMS Vendor에서 제공하는 SQL은 해당 DBMS에서만 사용이 가능하다. ORM은 DB에 맞는 SQL문을 자동으로 생성해주기 때문에 해당 프로젝트에서 어떤 DBMS를 사용하는지 설정해주어야 한다. 이러한 설정이 Dialect이다. 💡 Dialect 이란? JPA의 가장 큰 특징이자 장점은 객체간 관계를 바탕으로 SQL 쿼리를 자동으로 생성해서 DB에 전달해주는 것이다. 하지만, DB의 종류는 다양하고 각각 DB마다 SQL 문..
💡 Flyway 란? Flyway : 데이터베이스 형상 관리를 위한 오픈 소스 데이터베이스 마이그레이션 툴이다. * 형상 관리(Software Configuration Management) - 소프트웨어의 변경 사항을 체계적으로 추적하고 통제하는 것 * 데이터베이스 마이그레이션 툴 - 데이터베이스의 변경 사항을 추적하고 업데이트나 롤백을 쉽게할 수 있도록 하는 도구 소스 코드의 이력을 Git으로 관리하듯, 데이터베이스 이력을 Flyway로 관리한다고 생각하면 이해하기 쉽다 ! ✔️ 데이터베이스 형상 관리의 장점 데이터베이스 스키마(Schema) 변경 이력이 남는다. 데이터베이스에서 문제가 발생했을 때, 데이터베이스를 수정한 변경 이력이 남아있으면 문제의 원인을 파악할 수 있어서 문제 해결에 도움이 된다...
들어가기 Spock 프레임워크는 BDD를 위한 테스팅 프레임워크이다. Spock 프레임워크에 대해 알아보기 전에 먼저, BDD란 무엇인지 알아보도록 하자 ! 💡 BDD(Behavior-Driven Development) 란? BDD(Behavior-Driven Development) - 행동 주도 개발로, 사용자의 행위를 미리 예상하고 결과를 테스트하는 개발 방식이다. - TDD에서 파생된 개발 방법론이다. ✔️ BDD 개발 절차 BDD는 Given-When-Then 세 가지로 테스트를 진행하는 정형화된 형식이 존재한다. 1. Given : 주어진 환경 시나리오 상에서 주어진 환경을 정의한다. 테스트에 필요한 환경을 설정하는 작업이다. When, Then 보다 상위에 위치해야 한다. 2. When : 행..
들어가기 네트워크를 통해 DB에 접근(Ex. 실제 운영하는 서비스)하는 시간 비용은 애플리케이션 서버 내부 메모리에 접근하는 시간보다 훨씬 비싸다. 이러한 부담을 줄이고 성능을 높이기 위해 Hibernate와 같은 JPA 구현체들은 캐시(Cache)를 지원한다. 캐시를 사용하면 매번 필요한 데이터를 DB에서 조회하지 않고, 캐싱해둔 데이터를 통해 DB 접근 횟수를 줄여 애플리케이션의 성능을 향상 시킬 수 있다. 💡 1차 캐시 (First Level Cache) 1차 캐시란? : JPA 영속성 컨텍스트 내부에 존재하는 캐시(Chache)로, EntityManager로 조회/변경하는 모든 엔티티가 1차 캐시에 저장된다. ✔️ 1차 캐시 특징 1차 캐시는 트랜잭션 범위 내에서만 동작하여 트랜잭션이 시작하고 종..
💡 영속성 컨텍스트란? 영속성 컨텍스트(Persistence Context)는 Entity를 영구 저장하는 환경으로, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. JPA는 EntityManager, 영속성 컨텍스트를 통해 데이터의 상태 변화를 감지하고 상황에 맞는 쿼리를 수행한다. EntityManager에 Entity를 저장하거나 조회하면 EntityManager는 영속성 컨텍스트에 Entity를 보관하고 관리한다. * EntityManager - EntityManager는 JPA에서 제공하는 인터페이스로, 영속성 컨텍스트 내에서 Entity를 관리한다. 💡 Entity 생명주기 Entity의 생명주기에는 4가지 상태가 있다. ✔️ 비영속 상태 (new /..