전체 글

RDBMS  vs NoSQL 관계형 데이터베이스: RDBMS관계형 데이터베이스(RDBMS)는 데이터를 테이블(행과 열) 구조로 저장하고 관리하는 데이터베이스 관리 시스템으로, 데이터 간의 관계를 기반으로 동작한다. ACID 원칙을 준수하며 높은 신뢰성과 데이터 무결성을 보장한다. 행렬 & 관계형 & Fixed Schema행렬: 2차원 배열 데이터 → 복잡한(다차원) 데이터 표현하기엔 한계가 있다. 따라서 Relation이 필요하다.관계: 복잡한(다차원) 데이터를 다수의 2차원 Entity(테이블)들로 쪼개어 놓는다. (PK-FK)Fixed Schema: 고정된 Column 정의대로 데이터를 적재한다.1. 고신뢰성 (High Reliability) 및 데이터 무결성(Data Integrity)ACID 준수..
Docker Compose : 두 개 이상의 도커 이미지 빌드 / 컨테이너 구동Docker Compose목적: Docker Compose를 통한 Spring Boot + Database(MySQL) 동시 구동이번 챕터에선 Docker Compose를 사용하여 앞서 진행했던 Spring Boot 애플리케이션과 MySQL 데이터베이스를 동시에 구동하는 방법과 그 과정에 대해 알아보자. Docker Compose를 통해 여러 개의 Docker 컨테이너를 손쉽게 관리할 수 있다. DockerFile: 하나의 애플리케이션(이미지)을 정의하고 빌드할 때 사용한다.Docker Compose: 둘 이상의 애플리케이션(이미지)을 정의하고 함께 실행할 때 사용한다. 각 컨테이너 간의 네트워크 설정 및 환경 변수 설정을 쉽..
Docker를 통한 Database 구동Database: 사용하려는 DB의 Base Docker Image 기반에 추가 설정목적: Docker를 통한 Database(MySql) 구동 ← docker 명령어 사용데이터베이스 구동은 Dockerfile 통한 이미지 생성 없이, 베이스 이미지로 바로 구동한다.1. MySQL 도커 구동아래 명령어를 통해 바로 구동이 가능하다주의: 도커 내 포트는 3306이지만, 로컬 노출 포트는 33066docker run --name mysql-container \-e MYSQL_ROOT_PASSWORD=root \-e MYSQL_USER=asac \-e MYSQL_PASSWORD=1234 \-e MYSQL_DATABASE=example \-p 33066:3306 -d my..
개발환경과 배포환경의 분리, 일관된 실행 환경Why Use to Docker?도커라이즈를 적용하기에 앞서, Docker를 사용하는 근본적인 이유에 대해 알아보자.격리(Isolation): 로컬(인스턴스)의 환경과 분리된 도커 환경으로 로컬 환경의 오염이나 충돌을 방지한다.일관성(Consistency): 다양한 로컬(인스턴스)에서도 도커를 통해 일관된 애플리케이션을 구동할 수 있다.Docker가 없을 때:로컬(인스턴스) 환경과 App 구동을 위한 환경이 충돌하고 이리저리 섞인다.문제점: 각 개발자의 로컬환경이 서로 달라, 일관된 환경 구성이 어렵다.Aaron: Window OS에서 MySQL 5.7, JVM 17, 16, 12Baron: Linux OS에서 MySQL 8, JVM 17, 8Caron: Ma..
실습 #3앞선 포스팅에서 언급했듯, 매번 배포 시, GitHub Actions가 Docker Hub에 이미지를 푸시하고, 개발자가 EC2에 직접 접속해 수동으로 이미지를 가져와 실행하는 것은 번거롭고 비효율적이다. 따라서, Github Actions가 이미지를 Docker Hub에 푸시한 후 자동으로 EC2에 접속해 이미지를 Pull하고 컨테이너를 실행하도록 설정하면 훨씬 더 수월하고 편리하게 자동 배포를 수행할 수 있다. 따라서 이번 포스팅에선 자동으로 이미지를 Pull, 컨테이너를 실행하도록 설정하는 작업 과정을 포스팅할 예정이다.이 자동화 방식에서는 GitHub Actions가 EC2에 SSH로 접근해 다음 작업을 처리할 수 있다.Docker Hub에서 최신 이미지 Pull: 새로운 이미지가 생성되..
실습 #21.  AWS EC2 생성첫번째로 현재 CD를 통해 Spring을 구동할 AWS EC2가 아직 없으니 인스턴스를 만들어준다.키페어는 없이 진행.이전에 만들었던 VPC로 진행할 예정 (https://1000sang-dev.tistory.com/64) 퍼블릭 IP 자동 활성화 설정보안 그룹의 경우 기존 22번 포트 외에 "8080 포트의 모든 IP" 인바운드 규칙을 추가해줘야한다.사용자 지정 TCP 포트 8080 입력 → 위치 무관(모든 IP) 추가EC2 연결 확인 아래 이미지를 통해 EC2 인스턴스 연결을 통해 접속을 성공한 것을 확인할 수 있다. 👏 2. 생성한 AWS EC2 내 Docker 설치도커 이미지를 컨테이너로 실행하는 것은 Docker Daemon(Docker Engine)이다.지금..
실습 #1 1. CI 사전 준비: 배포하고자 하는 Java 코드 작성 및 Github 업로드⚠️ 필자는 이전에 공부했던 Spring 실습 코드를 Github를 이용할 예정이다. 1. 디폴트 브랜치 이름을 main으로 바꾸어준다.필자는 main 브랜치로 배포할 것임.git branch -m main 2. 원격 저장소를 생성한 후, 원격 저장소(Github Repository)에 Push. (sanghyun-e/ci-ci-tutorial) 원격 저장소가 없는 경우 git remote add origin git@github.com:SangHyun-e/ci-cd-tutorial.git 원격 저장소를 변경하는 경우git remote set-url origin git@github.com:SangHyun-e/ci-c..
Event, Runner, Job, Step, ActionCI / CD Tool: GitHub ActionsGitHub Actions vs Jenkins CI / CD 툴로 유명한 것은 GitHub Action과 Jenkins가 있다. Jenkins는 별도의 Jenkins 서버를 따로 구축해야되기 때문에 무료 툴인 GitHub Action을 사용할 예정이다. Why Use to GitHub Actions?CI / CD 간소화: 별도의 서버(Jenkins 등)를 구축할 필요 없이 GitHub에서 무료로 제공한다.원활한 통합: GitHub 저장소와 자연스럽게 연동되어 자동화 및 반복적인 작업 수행에 유리함.CI / CD 개념CI (Continuous Integration): 코드가 지속적으로 통합되어 빌드 ..
1000_sang
CHEONSANG-DEV