CI/CD란 무엇인가?

CI(Continuous Integration)란 CI(Continuous Integration)는 지속적 통합을 의미한다. 코드가 작성되고 변경될 때마다 자동으로 빌드하고 테스트하는 과정이다. 쉽게 말해, 여러 개발자들이 작성한 코드를 자동으로 통합하는 과정이라고 할 수 있다. CI의 작동 방식 개발자가 코드를 수정한다 코드를 저장소(예: GitHub)에 올린다 CI 도구가 자동으로 코드를 가져와 빌드한다 테스트를 실행한다 결과를 개발자에게 알려준다 CI의 장점 코드 문제를 빨리 발견할 수 있다 수동으로 빌드하고 테스트하는 시간을 줄일 수 있다 품질 높은 코드를 유지할 수 있다 CD(Continuous Deployment)란 CD(Continuous Deployment)는 지속적 배포를 의미한다. CI 과정을 통과한 코드를 자동으로 서비스에 반영하는 과정이다. 즉, 개발한 내용을 사용자가 바로 사용할 수 있게 만드는 과정이다. ...

6월 10, 2024 · 1 분 · 191 단어 · In-Jun Hwang

socket이란 무엇인가?

소켓(Socket)이란 소켓(Socket) 은 네트워크 통신을 위한 인터페이스를 제공하는 소프트웨어이다. 소켓은 클라이언트와 서버 간의 통신을 가능하게 하며, 데이터를 주고받을 수 있다. 소켓은 네트워크 통신을 위한 API(Application Programming Interface)를 제공한다. 소켓은 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)를 지원하며, 데이터를 안정적으로 전송할 수 있다. 소켓 통신 방식 소켓은 클라이언트와 서버 간의 통신을 위해 다음과 같은 방식을 제공한다. TCP(Transmission Control Protocol): 연결 지향(Connection-Oriented): 클라이언트와 서버 간에 연결을 설정하고, 데이터를 안정적으로 전송한다. 신뢰성(Reliability): 데이터를 순서대로 전송하고, 손실된 데이터를 재전송한다. 흐름 제어(Flow Control): 데이터의 전송 속도를 조절하여 데이터 손실을 방지한다. 혼잡 제어(Congestion Control): 네트워크의 혼잡 상태를 감지하고, 데이터의 전송 속도를 조절한다. UDP(User Datagram Protocol): ...

6월 8, 2024 · 1 분 · 209 단어 · In-Jun Hwang

1차 캐시와 2차 캐시 알아보기

1차 캐시(First Level Cache)란 1차 캐시(First Level Cache) 는 영속성 컨텍스트(Persistence Context) 내부에 존재하는 캐시를 말한다. 1차 캐시는 엔티티를 조회하면, 영속성 컨텍스트가 엔티티를 캐시에 저장한다. 이후 같은 엔티티를 조회하면, 영속성 컨텍스트는 캐시에서 엔티티를 찾아 반환한다. 그렇기 때문에 트랜잭션 내에서만 유효하며, 트랜잭션이 종료되면 1차 캐시도 함께 종료된다. 더티 체킹(Dirty Checking) 더티 체킹(Dirty Checking) 은 1차 캐시를 통해 엔티티의 변경 사항을 추적하는 방식이다. 엔티티를 조회하면, 영속성 컨텍스트는 엔티티의 초기 상태를 저장한다. 이후 엔티티의 상태가 변경되면, 영속성 컨텍스트는 변경 사항을 추적하고 데이터베이스에 반영한다. ...

6월 8, 2024 · 2 분 · 299 단어 · In-Jun Hwang

영속성 컨텍스트 알아보기

영속성 컨텍스트란 영속성 컨텍스트(Persistence Context) 는 JPA(Java Persistence API)에서 엔티티를 관리하는 환경을 말한다. 영속성 컨텍스트는 엔티티를 관리하고, 엔티티와 데이터베이스 간의 상태 변화를 추적한다. 영속성 컨텍스트는 엔티티 매니저(Entity Manager)에 의해 관리된다. 영속성 컨텍스트의 주요 기능 엔티티 관리: EntityManager가 엔티티를 관리한다. 영속성 컨텍스트가 엔티티의 초기 상태를 저장한다. 트랜잭션 연계: 영속성 컨텍스트는 트랜잭션과 생명 주기를 같이 한다. 트랜잭션이 커밋되면, 영속성 컨텍스트가 관리하는 엔티티의 변경 사항이 데이터베이스에 반영된다. 변경 감지(Dirty Checking): 영속성 컨텍스트는 엔티티의 변경 사항을 추적한다. 트랜잭션이 커밋되기 전에, JPA는 엔티티의 현제 상태와 초기 상태를 비교한다. 변경 사항이 감지되면, JPA는 자동으로 데이터베이스 업데이트 쿼리를 생성하고 실행한다. 영속성 컨텍스트의 동작 방식 엔티티 관리: ...

6월 8, 2024 · 1 분 · 197 단어 · In-Jun Hwang

Dirty Checking 알아보기

Dirty Checking이란 Dirty Checking은 JPA(Java Persistence API)에서 엔티티의 변경 사항을 자동으로 감지하고, 이를 데이터베이스에 반영하는 방식이다. Dirty Checking을 통해 개발자는 명시적으로 데이터베이스 업데이트 쿼리를 작성할 필요 없이, 객체의 상태만 변경하면 된다. 또한 Dirty Checking은 영속성 컨텍스트(Persistence Context)가 관리하는 엔티티만 적용된다. Dirty Checking 동작 방식 엔티티 관리: EntityManager가 엔티티를 관리한다. 영속성 컨텍스트(Persistence Context)가 엔티티의 초기 상태를 저장한다. 변경 감지: 트랜잭션이 커밋되기 전에, JPA는 엔티티의 현제 상태와 초기 상태를 비교한다. 변경 사항 적용: 변경 사항이 감지되면, JPA는 자동으로 데이터베이스 업데이트 쿼리를 생성하고 실행한다. 트랜잭션이 커밋되면, 변경 사항이 데이터베이스에 반영된다. 예시 1 2 3 4 5 6 7 8 9 10 11 12 13 // 엔티티 저장 Member member = new Member("Alice"); memberRepository.save(member); // 엔티티 조회 Member findMember = memberRepository.findById(member.getId()).get(); // 엔티티 변경 findMember.setName("Bob"); // 변경 사항 감지 // Dirty Checking이 동작하여 자동으로 데이터베이스 업데이트 쿼리를 생성하고 실행한다. // UPDATE member SET name = 'Bob' WHERE id = 1; 장점 편의성: 개발자가 데이터베이스 업데이트 쿼리를 작성할 필요 없이, 객체의 상태만 변경하면 된다. 일관성: 변경 사항이 자동으로 데이터베이스에 반영되므로, 데이터 일관성을 유지할 수 있다. 생산성: 개발자가 비즈니스 로직에 집중할 수 있으므로, 생산성이 향상된다.

6월 8, 2024 · 1 분 · 179 단어 · In-Jun Hwang