GitLab 에서의 CI/CD 전형적인 배포의 단계들 1. 프로젝트가 빌드 준비를 마치면 Dockerfile 을 작성한다. 2. 파이프라인에서 사용하는 환경변수들을 설정한다. 3. 1번에서 작성한 Dockerfile 로 docker build 와 docker push 를 하는 YAML 파일로 파이프라인을 작성한다. 4. YAML 파일을 업데이트하면 파이프라인이 자동으로 실행되는 것을 목록에서 볼 수 있다. 5. 작성한 파이프라인이 성공적으로 실행되면 Container Registry 에 Docker 이미지가 생성되어 있음을 볼 수 있다. 📃 Note 여기까지가 Continuous Delivery 에 포함된다. Continuous Delivery, 지속적 제공이란 배포 직전 단계까지의 과정을 자동화하여 구..
🚀 사건의 전말 GitLab 으로 버전 관리를 하는 프로젝트에 CI, 지속적 통합을 적용하기 위해서는 YAML 파일 .gitlab-ci.yml 에 프로젝트 리포지토리에 변경이 일어날 때마다 실행될 파이프라인에서 사용할 명령어들로 구성된 스크립트를 작성해야 한다. 내 프로젝트에서는 Docker 를 이용해 애플리케이션을 Gradle 로 빌드하여 Docker 이미지를 만들어야 했다. 아래와 같이 YAML 파일을 작성하였다. 레포지토리에 있는 Dockerfile을 사용해서 Docker 이미지를 생성한다. 그리고 깃랩의 컨테이너 레지스트리에 등록한다. stages: - dockerbuild-push package: image: docker:latest stage: dockerbuild-push services: ..
📃 Introduction 웹 어플리케이션을 배포하여 서비스로서 제공할 때, 클라우드를 사용한 가상 서버 호스팅 또는 물리적인 서버를 직접 구매 또는 임대하는 방법이 있다. 오늘은 가상 서버 호스팅이 무엇인지에 댇해서 알아보고자 한다. 📌 가상 서버의 정의 사용하는 방식에 따라 정의가 달라질 수 있다고 한다. 서버는 물리적인 데이터 센터 또는 클라우드 환경에 위치할 수 있는데, 하나의 물리적인 서버를 다른 이들과 공유하기 위해 사용되는 것이 바로 가상 머신이다. (Virtual Machine) 서버는 본래 하나의 기업이나 개인을 위해 사용되는 것이 일반적이었으나, 서버의 가상화를 통해 한 서버가 제공하는 자원을 다양한 사용자가 나누어 사용할 수 있게 되었다. 가상 서버는 물리 서버에 비해 하드웨어가 필요..
🧱 CI/CD 📌 CI - Continuous Integration, 지속적인 통합 💡 Instruction CI 라는 개념이 와닿지 않아서, 리팩토링의 저자 마틴 파울러의 블로그를 번역하며 공부해보았다. 아래 글은 출처를 밝힌 사이트의 번역 글이다. 지속적인 통합은 조직의 구성원들이 빈번하게 - 평균적으로 최소 하루에 한 번 -자신의 작업을 통합하여 하루에 여러 번 통합이 일어나게끔 하는 소프트웨어 개발 루틴이다. 각 통합은 최대한 빠르게 통합 시의 에러들을 파악하기 위해 빌드 자동화 (테스트를 포함하는) 를 활용한다. 많은 조직들은 이 접근방법이 통합 과정에서의 문제를 현저하게 감소시키고 더 빠르게 일관된 소프트웨어를 개발할 수 있게 한다는 것을 발견했다. - 마틴 파울러 - 🦾 CI 활용의 이점 C..
성공적인 앱을 개발하기 위해서는 매력적인 UI 디자인만으로는 부족하다. 편리한 기능과, 빠른 속도, 보안, 구조적 뛰어남이 있어야 하고 치명적인 에러가 없어야 한다. 다시 말해서, 신중하게 모바일 앱 아키텍처를 설계해야 한다. 모바일 앱 아키텍처란? 모바일 앱 아키텍처는 모바일 어플리케이션을 개발하는 방법에 대한 규칙들, 기술들과 패턴들의 본질이다. 즉, 아키텍처 설계는 기술 스택이 어떤지, 구조가 어떻게 이루어져 있는지, 데이터를 어떻게 관리할 것인지 에 대한 고민들을 포함한다. 사용자의 요구사항 파악 (요구 공학) 아키텍처를 설계할 때 소프트웨어 개발자들이 따라야 할 세 종류의 원칙이 있다: 1. SOLID - 유지 보수가 쉽고 확장성이 좋은 앱을 만들기 위한 객체 지향 설계의 5가지 원칙 2. KI..
Gradle 은 빌드 과정을 기록해서 보여주는 build scan 을 생성하는 기능을 제공해준다. Gradle 4.3 이나 그 이상의 버전에서는 다음 커맨드를 사용해서 build scan 을 생성할 수 있다. $ gradle build --scan 하지만, Intellij 에서는 조금 다르다. 터미널을 기반으로 빌드하고 있지 않기 때문이다. 다음과 같은 방법을 사용했다. 이렇게 설정값을 바꾼 후, 새롭게 설정된 build 를 더블 클릭하면 아래와 같은 화면이 나온다. 링크가 등장하는 것을 볼 수 있었다. 클릭하니 다음 화면이 나왔다. 자 이제 빌드를 프로파일링 해보자. 프로파일링은 빌드의 각 단계에 소모되는 시간은 얼마인지, 어떤 과정을 어떻게 거치고 있는지를 분석하는 것을 말한다. Performance..
도커로 Gradle 빌드 후 프로젝트 배포하는 과정 1. 아래와 같이 Dockerfile 을 작성한다. (Intellij 내에서 작성 or 깃허브에서 작성) 어떤 Gradle 프로젝트이던지 빌더 이미지의 .jar 확장자 파일에서 이름을 복사해 두 부분만 바꾸어주면 된다. FROM gradle:7.4-jdk11-alpine as builder WORKDIR /build # 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함. COPY build.gradle settings.gradle /build/ RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true # 빌더 이미지에서 애플리케이션 빌드 COPY . /build RUN..
What is Docker? 도커는 애플리케이션을 OS와 분리된 공간에서 컨테이너 형태로 사용할 수 있게끔 해주는 프로젝트이다. Docker Engine 도커 프로젝트의 핵심으로 컨테이너를 생성하고 관리하는 주체. 도커 엔진 만으로도 컨테이너 제어 및 다양한 기능을 사용할 수 있다. Hypervisor and Docker 도커 이전에는 하나의 호스트 컴퓨터에서 여러 '가상 머신' 을 사용할 수 있게 하는 하이퍼바이저가 있었다. '가상 머신' 이란? 물리적인 하드웨어로서의 컴퓨터가 아니라 소프트웨어를 사용하여 자원을 공급 받아 사용하는 주체이다. 각 가상 머신은 고유의 운영 체제를 가지고 있다. 하나의 호스트에서 여러 개가 운용될 수 있다. How Docker substitutes Hypervisor 도커..
- Total
- Today
- Yesterday
- gitlab
- FCM
- JPQL
- Firebase
- 인증/인가
- Spring Boot
- 알고리즘
- 깃랩
- JOIN FETCH
- Jackson
- ci/cd
- docker
- 코테
- google cloud
- DTO
- 지연 로딩
- JPA
- @RequestBody
- LazyInitializationException
- 역직렬화
- spring
- N+1
- 기지국 설치
- Java Data Types
- json web token
- 가상 서버
- DeSerialization
- 도커
- 실시간데이터
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |