목록2024/09 (20)
ballqs 님의 블로그
GitHub Action란?Github Actions 는 Github에 내장된 CI/CD 도구Github에 내장되어 있는 CI/CD라 github와 통합이 쉽고 CI/CD 서버가 내장 되어 CI/CD서버를 따로 구축할 필요 없으며, 일정 수준까지 가격이 무료! ※무료 버전 : 스토리지 500MB, 월 2000분 Github Actions 동작 방법repository의 .github/workflows 디렉토리에 필요한 Actions 파일들을 yaml 형식으로 작성 CI란? test를 통과한 코드만 develop 브랜치와 main 브랜치에 merge되도록 하여 오류를 방지하고 안정적인 코드가 배포되고 버그를 빠르게 발견 사용 예제더보기# Actions 이름 github 페이지에서 볼 수 있다.name..
Docker Network란?Docker Network는 Docker Container끼리 서로 통신할 수 있게 도와주는 네트워크 핵심 개념네트워크 샌드박스: 각 컨테이너는 독립된 샌드박스 안에 존재하며, 외부의 직접적인 접근을 차단합니다. 이는 컨테이너를 안전하게 보호하는 역할을 합니다.엔드포인트: 샌드박스와 외부 네트워크를 연결하는 지점입니다. 컨테이너는 엔드포인트를 통해 다른 컨테이너나 외부 네트워크와 통신할 수 있습니다.네트워크: 여러 개의 엔드포인트를 연결하여 통신 경로를 형성합니다. 하나의 컨테이너는 여러 개의 네트워크에 연결될 수도 있습니다.주요 특징격리: 각 컨테이너는 다른 컨테이너로부터 격리되어 있어, 한 컨테이너에서 발생하는 문제가 다른 컨테이너에 영향을 미치는 것을 방지합니다.유연성:..
Docker 명령어들docker infoDocker 엔진과 구성 확인 Container 실행 테스트# nginx 이미지 다운받기docker image pull nginx:1.25.3-alpinedocker imagesdocker image history nginx:1.25.3-alpinedocker run -d -p 8001:80 --name webserver01 nginx:1.25.3-alpinedocker ps | grep webserver01docker port webserver01curl localhost:8001Docker Image 관한 명령어 docker pull Docker 이미지 내려받기 docker image inspectDocker 이미지 구조 확인docker image inspect..
Docker Compose 란?여러 개의 Docker Container를 하나의 서비스로 정의하고 구성하며 관리할 수 있게 하는 것 Docker Compose를 사용하는 이유는?편하게 설정하기 : 여러 컨테이너를 한 파일에 적어서 설정자동으로 배포 : Docker Compose가 컨테이너들을 알아서 만들어 줌의존성 관리 : 컨테이너들간 서로 의존관계가 있다면 관리 해줌모니터링과 로깅 : 컨테이너의 현 상황을 모니터링하여 보여주며 로그까지 남김확장성 : 여러 컨테이너를 하나의 그룹으로 관리유연성 : 개발 환경,테스트 환경,실제 운영 환경에서도 같은 설정 파일을 쓰기 가능보안 강화 : 네트워크를 분리하여 외부로부터 접근을 제한유지보수 용이 : 설정 파일 하나로 컨테이너를 관리하기에 바꿀 일 있으면 파일 수정..
Dockerfile 이란?이미지를 생성하기 위한 용도로 작성하는 파일이다. 이 파일을 통해 Docker에 사용할 Image를 생성한다.Dockerfile 사용방법Dockerfile 기본적인 틀# DockerfileFROM ubuntu:latestMAINTAINER Your Name RUN apt-get update && apt-get install -y nginxCOPY index.html /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]FROM: 베이스 이미지를 선택MAINTAINER: 이미지를 만든 사람의 정보를 입력RUN: 이미지에 명령을 실행하여 파일을 추가하거나 삭제COPY: 파일을 이미지에 복사EXPOSE: 컨테이너가 노출할 포..
JpaRepository 쿼리 사용 방법리턴타입 {접두어}{도입부}By{프로퍼티 표현식}(조건식)[(And|Or){프로퍼티 표현식}(조건식)](OrderBy{프로퍼티}Asc|Desc) (매개변수...)접두어Find, Count, ...도입부Distinct, First(N), Top(N)프로퍼티 표현식Person.Address.ZipCode => find(Person)ByAddress_ZipCode(...)조건식IgnoreCase, Between, LessThan, GreaterThan, Like, Contains, ...정렬 조건OrderBy{프로퍼티}Asc|Desc리턴 타입E, Optional, List, Page, Slice, Stream매개변수Pageable, Sort 쿼리 실습 코드// 기본Lis..
JPA 테이블 매핑 기능 @Entity객체 관점에서의 이름디폴트로 클래스명으로 설정됨엔티티의 이름은 JQL에서 쓰임JQL : Entity 명으로 쿼리짤때 쓰이는 언어 (ex. JPQL, QueryDsl)@TableRDB 의 테이블 이름@Entity의 이름이 테이블의 기본값주로 Entity 이름과 다르게 Table 명을 지정하고 싶을때 아래와 같이 사용@Entity@Table(name = "users")public class User () {...}테이블의 이름은 SQL에서 쓰임SQL : Table 명으로 쿼리짤때 쓰이는 언어 (ex. JDBC, SQL Mapper)@Id엔티티의 주키를 맵핑할 때 사용자바의 모든 primitive 타입과 그 랩퍼 타입을 사용할 수 있음Date랑 BigDecimal, Big..
Proxy 패턴이란?프록시 패턴은 실제 객체에 대한 접근을 제어하고, 추가적인 기능을 제공하기 위해 사용되는 디자인 패턴이다.마치 대리인처럼 실제 객체를 대신하여 동작하며, 다양한 상황에서 유용하게 활용될 수 있다.Proxy 패턴 장점접근 제어실제 객체에 대한 직접적인 접근을 제한하고, 프록시를 통해서만 접근하도록 함으로써 보안을 강화할 수 있다.특정 조건에 따라 접근을 허용하거나 거부할 수 있다. 추가 기능 제공실제 객체의 기능을 확장하여 새로운 기능을 추가할 수 있다.예를 들어, 캐싱, 로그 기록, 권한 검사 등을 프록시에서 처리할 수 있다. 지연 로딩실제 객체를 필요한 시점까지 생성하지 않고, 프록시 객체를 통해 미리 참조할 수 있다.이는 큰 객체를 로딩하는 데 드는 시간을 절약하고 시스템 성능을 ..
@TransactionalEventListener란?@TransactionalEventListener는 스프링에서 데이터베이스 트랜잭션의 경계를 따라 이벤트를 처리할 때 사용하는 특별한 어노테이션입니다. 이 어노테이션은 트랜잭션이 성공적으로 커밋된 이후에 이벤트가 처리되도록 보장합니다. 즉, 데이터베이스에 대한 작업이 확실히 완료된 후에만 이벤트가 실행되므로, 이벤트 핸들러에서 트랜잭션 내에서 발생한 변경사항을 신뢰할 수 있게 됩니다.@EventListener와의 차이점@EventListener는 트랜잭션과 관계없이 이벤트가 발생하면 즉시 처리됩니다. 반면에, @TransactionalEventListener는 트랜잭션의 상태에 따라 이벤트를 처리할 시점을 결정할 수 있습니다. 이를 통해 트랜잭션이 실패..
수 없이 공부를 했지만 세월에 인해 까먹는건 어쩔수 없나보다.그리고 기록하는 곳이 바뀌었음에 따라 여기에도 마침 다시 외우기 위해 작성해둔다.기본 테이블 설정학번 (student_id)이름 (name)이메일 (email)1홍길동hong@example.com2김철수kim@example.com3이영희lee@example.com기본 키(Primary Key)정의: 기본 키는 각 행을 고유하게 식별하며, 중복을 허용하지 않고 null 값이 허용되지 않습니다. 예시 테이블학번 (student_id)이름 (name)이메일 (email)1홍길동hong@example.com2김철수kim@example.com3이영희lee@example.com왜 기본 키인가?학번(student_id)은 각 학생을 고유하게 식별하며, 중복..