반응형

전체 글 615

Github Actions를 이용한 CI/CD

CI 과정 1. Actions ➡️ Set up this workflow 2. .github\workflows의 main.yml에 Workflow 작성 yml 파일명은 바꿔도 됨 ⚠️ workflows 폴더 아래에 yml 파일이 있어야 워크플로우가 동작함 name: Java CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up JDK 11 uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin' - name: Validate Gradle wrapper uses: gradle/wrapper-validat..

git 2023.04.26

yml 파일 관리

yml 또는 properties 파일에 민감한 정보가 있을 때 깃허브에 private 저장소를 만들어서 가져와 사용하는 방법이다. git submodule add ${서브 모듈로 등록할 github} 먼저 private repo를 생성하고 yml 파일을 넣은 후에 위 명령어를 public repo에서 실행 public repo가 private repo를 서브 모듈로 사용할 저장소 public repo에서 서브 모듈을 사용하기 위해 실행한다. git submodule update --remote 서브 모듈이 변경되면, public repo에서 submodule을 갱신 서브 모듈을 변경할 때마다 서브모듈을 사용하는 프로젝트에서 이 명령을 쳐야한다. 깃허브에도 push해서 반영해주는 거 잊지말자!!! ✅ 서브..

git 2023.04.24

EC2

EC2 컴퓨팅 플랫폼 제공 컴퓨터를 1대 빌린다고 생각하면 된다. EC2 프리티어 리전에 따라 Windows t2,micro 또는 t3.micro 인스턴스를 매월 750시간 제공 리전에 따라 Linux, RHEL 또는 SLES t2.micro 또는 t3.micro 인스턴스를 매월 750시간 제공 EC2 배포 과정 인스턴스 생성 새 키 페어 생성 후 꼭 다운로드하자. 인스턴스를 분리해서 사용하지 않을거면 스토리지 추가 단계에서 크기를 30GB로 변경하자. 보안 그룹 구성에 MySQL 추가 인스턴스에 연결 jdk 설치 sudo apt update sudo apt install openjdk-11-jre-headless 깃헙 레포지토리 클론 후 build jar 파일 실행 ./gradlew build cd b..

AWS 2023.04.24

Thread(쓰레드)

Thread 프로세스(실행 중인 프로그램)의 자원을 이용해서 작업을 수행하는 것 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재 프로세스의 메모리 한계에 따라 쓰레드의 수가 결정된다. 구현 방법 Thread클래스를 상속받기 ⚠️ 다른 클래스를 상속받을 수 없다. [일반적인 방법] Runnable인터페이스를 구현하기 Runnable인터페이스를 구현한 클래스의 인스턴스를 생성한 다음, 이 인스턴스를 Thread클래스의 생성자의 매개변수로 제공해야 함 실행 방법 start()를 호출한다. 실행대기중인 쓰레드가 하나도 없으면 곧바로 실행상태가 된다. 하나의 쓰레드에 대해 start()는 한 번만 호출될 수 있다. ⚠️ 하나의 쓰레드에 대해 두 번 이상 호출하면 IllegalThreadStateExceptio..

JAVA 2023.04.24

JVM

JVM(Java Virtual Machine) 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경 제공 JVM은 자바 클래스 로더(Class Loader)와 자바 실행 엔진(Execution Engine)에 의존 JVM 자바 클래스 로더 클래스를 메모리에 로드하고 실행을 위해 사용할 수 있게 만드는 JVM의 일부 클래스 로딩(Class Loading)을 최대한 효율적으로 수행하기 위해 지연 로딩(Lazy-loading)과 캐싱(Caching) 같은 기법을 활용 JVM 실행 엔진 클래스 로더가 클래스를 로딩하는 작업을 마치면, JVM은 각 클래스에 있는 코드를 실행하기 시작 JVM 실행에 실행 엔진은 필수적이다. 파일 시스템 액세스, 네트워크 입출력을 위한 리소스를 관리 ⚙️ ..

JAVA 2023.04.23

백엔드 아키텍처

아키텍처 종류 계층형 아키텍처 특징 전통적인 수평적 계층화 장점 단순한 구조 보편적이라 익숙해서 처음 시작할 때 적합하다. 단점 업무 도메인에 대해 아무 것도 말해 주지 않음 소프트웨어가 커지고 복잡해지면 조직화에 도움 안 됨 데이터베이스 주도 설계 유도 클린 아키텍처 특징 의존성 역전을 이용해서 도메인이 중심 장점 단순한 규칙 도메인이 세부 사항에 의존하지 않음 DDD(도메인 주도 설계) 적용이 용이 비즈니스 규칙에 집중하기 쉬움 단점 패키지 구조가 계층형보다 더 복잡함 익숙하지 않아서 처음에 버벅일 수 있음 레퍼런스가 적음 목표 관심사의 분리 핵심 규칙 의존성의 방향은 안쪽, 고수준을 향함 이럴 땐 클린 아키텍처를 쓰지말자... 소규모의 프로젝트 진행 프로젝트 개발자 모두가 클린 아키텍처를 이해하고 ..

Architecture 2023.04.22

JaCoCo

JaCoCo 플러그인은 Java 코드에 대한 code coverage metrics를 제공한다. 아래의 모든 코드는 Gradle 8.1 버전을 기준으로 작성됨 Tasks Java 플러그인이 적용된 프로젝트의 경우 JaCoCo 플러그인은 아래와 같은 태스크를 자동으로 추가 jacocoTestReport 테스트 작업에 대한 code coverage report를 생성 jacocoTestCoverageVerification 테스트 작업에 대해 지정된 규칙에 따라 code coverage metrics 검증 1. JaCoCo 플러그인 적용 plugins { id 'jacoco' } 2. code coverage reports와 test 실행 사이에 의존성을 정의하고 싶을 때 test { finalizedBy j..

Test 2023.04.20

Docker

Docker open platform 애플리케이션을 인프라에서 분리 신속하다. 인프라를 애플리케이션을 관리하는 것 처럼 관리 코드를 배포에 용이 컨테이너 기반 가상화 도구 리눅스 컨테이너 기술인 LXC(Linux Containers) 기반 애플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술 다양한 운영체제에서 사용할 수 있으며, 컨테이너화된 애플리케이션을 손쉽게 빌드, 배포, 관리할 수 있는 다양한 기능을 제공 Container 가상화 기술 중 하나 호스트 운영체제 위에 여러 개의 격리된 환경을 생성 각각의 컨테이너 안에서 애플리케이션을 실행 리눅스 커널의 기능을 사용하여 만들어짐 프로세스 단위의 격리 환경 가상화(Virtualization) 기술 하나의 물리적인 컴퓨터 자원(CPU, 메모..

DevOps/Docker 2023.04.19
반응형