[CI/CD] Spring boot 프로젝트 Github Actions + Docker를 활용하여 EC2에 배포하기
·
DevOps
오늘은 spring boot 프로젝트를 github actions, docker를 활용하여 EC2에 배포하는 과정을 담았습니다. AWS EC2 인스턴스 생성(Amazon Linux 2023), EC2에 docker설치, Docker hub 계정이 있다는 가정하에 진행한다. 기존 배포 방식의 문제점CI/CD 없이 배포할 경우, jar 파일을 직접 빌드하고 EC2에 수동으로 업로드한 뒤 java -jar 명령어로 실행해야 합니다.코드 변경이 잦은 상황에서 이러한 방식은 번거롭고 비효율적입니다.CI/CD를 도입하면 이 과정을 자동화할 수 있어, 개발 효율과 운영 생산성을 크게 높일 수 있습니다. Github Actions vs JenkinsGithub Actions는 Jenkins와 비교하면 CI 서버가 따..
[Docker] EC2 Ubuntu서버에 docker 설치하기
·
DevOps
이 블로그에서는 AWS EC2 인스턴스를 이미 생성한 상태라는 가정하에,터미널을 통해 해당 서버에 직접 접속하고 Docker를 설치하는 과정을 실습 형태로 안내드릴 예정입니다.아직 EC2 인스턴스를 생성하지 않으셨다면, 아래 링크를 통해 AWS 회원가입 및 로그인 후 EC2 인스턴스를 먼저 생성하신 후 이 글을 따라오시는 것을 권장드립니다.👉 AWS 콘솔 바로가기참고: AWS는 **무료 티어(Free Tier)**를 제공하고 있어, 처음 사용자도 비용 부담 없이 EC2 인스턴스를 테스트해볼 수 있습니다. 해당과정은 Terminal에서 직접 EC2서버에 접근하여 Docker를 설치하는 과정을 실습으로 진행하겠습니다. EC2 서버에 SSH로 접속하는 방법AWS에서 EC2 인스턴스를 생성하면, 개인 키 파일..
💻 실전편: Spring 프로젝트를 Docker로 배포해보기
·
DevOps
안녕하세요. 오늘은 우리가 만든 Spring 프로젝트를 docker를 활용하여 배포하는 과정을 예제로 적어볼까합니다. 우선적으로 Spring 프로젝트는 이미 가지고 계신다는 전재하에 블로그를 쓰니 이점 참고 부탁드리겠습니다.https://github.com/Junni802/docker-example GitHub - Junni802/docker-exampleContribute to Junni802/docker-example development by creating an account on GitHub.github.com(귀찮아서 안만들고 기존것으로 할려고했는데 하나 올립니다) 도커 설치하기도커 설치 URLhttps://www.docker.com/products/docker-desktop Docker De..
도커(Docker)란 무엇인가?
·
DevOps
도커(Docker)란 무엇인가?도커는 컨테이너 기반 가상화 기술을 활용해 애플리케이션을 효율적으로 배포, 실행, 관리할 수 있도록 도와주는 오픈소스 플랫폼입니다.컨테이너란 운영체제 수준에서 격리된 실행 환경으로, 애플리케이션과그에 필요한 라이브러리, 설정 파일 등을 하나로 묶어 독립적으로 실행할 수 있게 합니다.이를 통해 한 시스템에서 여러 애플리케이션을 동시에 실행하더라도 충돌 없이 운영할 수 있으며,다양한 환경에서도 일관된 실행 결과를 보장합니다. 기존 가상화방식과 도커(Docker)의 차이점 기존 가상화 (OS Virtualization)Host OS 위에 Guest OS 전체를 가상화VM Ware, virtualBox자유도가 높으나, 시스템에 부하가 많고 느려짐 컨테이너 가상화 (Container..
Kafka Connect와 JDBC Source Connector로 실시간 데이터 파이프라인 구축하기
·
Kafka
현대의 데이터 시스템에서는 서로 다른 데이터베이스나 서비스 간에 데이터를 실시간으로 연동하는 일이 필수가 되었습니다.이때 Kafka Connect는 반복적인 파이프라인 구성과 유지보수를 획기적으로 단순화해주는 강력한 도구입니다.Kafka Connect란?Kafka Connect는 Kafka 기반의 데이터 연동 플랫폼으로, 별도의 코딩 없이 JSON 기반 설정만으로 다양한 데이터 소스(RDBMS, 파일, 로그 등)와 타겟 시스템 간에 실시간으로 데이터를 주고받을 수 있게 도와줍니다.복잡한 데이터 파이프라인을 구현하는 대신, 이미 만들어진 커넥터(Connector)를 설정만으로 바로 사용 가능한 것이 가장 큰 장점입니다. 이로 인해 개발 효율성은 물론 유지보수 비용도 크게 줄어듭니다.Kafka Connect..
Kafka Connect와 이를 활용한 Sink Connector 알아보기
·
Kafka
Kafka Connect 란?kafka Connect는 카프가 메시징 시스템을 기반으로 다양한 데이터 소스 시스템, 예를들어 RDBMS, NOSQL혹은 csv와 같은 파일이나 로그 등의 데이터 소스에서 발생한 이벤트를 다른 데이터 타켓 시스템으로 별도의코딩 없이 실시간으로 전달할 수 있는 Kafka Component 중 하나입니다.Kafka Connect의 장점Kafka Connect의 가장 큰 장점 중 하나는 별도의 코딩 없이 데이터 파이프라인을 구성할 수 있다는 점입니다.다양한 데이터 소스 시스템에서 발생하는 이벤트를 Kafka로 연동할 때, 일반적으로 Kafka 클라이언트를 직접 사용해서 개발해야 하지만, Kafka Connect는 JSON 기반의 간단한 설정 파일만으로 연동이 가능합니다.이를 통해..
Kafka를 활용한 실시간 메시징 시스템 구축 (Mac/Windows 가이드
·
카테고리 없음
Apache Kafka는 대용량 실시간 데이터 스트림을 처리하기 위한 분산 메시징 시스템입니다. 이 가이드에서는 Kafka를 직접 설치하고, Producer와 Consumer를 활용하여 메시지를 주고받는 과정을 단계별로 설명합니다.📋 목차Kafka 설치 및 환경 구성 (Mac & Windows)Zookeeper 및 Kafka 실행토픽 생성 및 메시지 전송Producer와 Consumer 실습자주 발생하는 오류 및 해결 방법1️⃣ Kafka 설치 및 환경 구성✅ Mac 사용자의 경우:Kafka 공식 다운로드 페이지에서 최신 버전을 다운로드합니다. Scala 버전은 무관합니다. 예: kafka_2.13-3.7.0.tgz터미널을 열고, 다운로드한 디렉토리로 이동하여 다음 명령어를 실행하여 압축을 해제합니다:..
[Kafka] 카프카란?
·
Kafka
카프카(Kafka)란?카프카(Kafka)는 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼이다. 이벤트 스트리밍은 인체의 중추 신경계에 해당하는 디지털 처리 방식입니다.이는 비즈니스가 점점 더 소프트웨어화, 자동화되는 'always-on' 세상을 위한 기술 기반입니다. Kafka의 이벤트 스트리밍은 Fortune 100대 기업의 60% 이상을 포함하여 수많은 산업 및 조직의 다양한 사용 사례 에 적용됩니다. 카프카의 탄생 배경그림만 봐도 너무 복잡한 연결구조가 아닌가...기존 데이터 시스템의 문제점End-to-End 연결 방식의 아키텍처데이터 연동의 복잡성 증가(HW, 운영체제, 장애 등)서로 다른 데이터 Pipeline 연결 구조..
RestTemplate VS WebClient VS FeignClient 각 장단점에 대하여 알아보자
·
MSA
RestTemplate이란?RestTemplate은 Spring에서 REST API를 호출할 수 있도록 제공하는 내장 클래스입니다. Spring 3.0부터 지원되었으며, JSON과 XML 응답을 모두 받을 수 있습니다.RestTemplate의 장점Spring 3.0부터 지원하는 안정적인 HTTP 통신 템플릿HTTP 요청 후 JSON, XML, String 등의 응답을 받을 수 있음간단한 HTTP 요청에 적합Header, Content-Type 등을 설정하여 외부 API 호출 가능Server-to-Server 통신에 적합RestTemplate의 단점Blocking I/O 기반의 동기 방식으로 동작하여 동시 요청이 많을 경우 성능 저하 가능코드 작성이 번거로움 (매번 HTTP 요청을 생성하고 응답을 처리해야..
[Spring] Mybatis를 이용하여 Batch Insert 성능 테스트(ORACLE 기준)
·
SpringBatch
오늘은 회사에서 대량데이터를 처리하는데 API호출시간이 1분이 너머가는 문제를 파악하여이를 해결하는 과정과 무엇이 제일 빠르게 데이터를 처리가능 했는지 포스팅 해볼려고 합니다. 우선 제일 중요한 결과론적으로 테스트 결과를 공유하겠습니다. 총 개수는 총 1438개를 기준으로 진행하였습니다.1. forEach문을 통한 BULK INSERT [INSERT ALL] - 19초 2. for문을 통한 단건 insert - 7.39초 3. forEach문을 통한 성능 [SELECT - UNION ALL] - 4.45초 4. BATCH INSERT - 0.15초 결과론적으로 보아도 확실히 성능이 대폭 향상한 것을 볼 수 있습니다.아래에서는 Batch Insert의 개념과 장점, 사용방법에 대하여 설명하겠습니다. Bat..
File과 Map을 동시에 Controller에서 동시에 받아야 할 경우
·
현업에 종사하면서 발견한 문제점
회사에서 일하면서 Map과 File을 동시에 Request받아야 할 일이 생겼습니다. Content-Type - Application/json Map 객체는 JSON 형태로 보내야 합니다.예를 들어, 클라이언트에서 JavaScript 객체 형태로 Map 데이터를 JSON으로 변환하여 서버에 전송할 수 있습니다.{ "key1": "value1", "key2": "value2"}이 데이터는 HTTP 요청의 Content-Type이 application/json이어야 하며,Spring의 @RequestBody 어노테이션을 사용하여 매핑할 수 있습니다.@PostMapping("/api/data")public String handleData(@RequestBody Map map) { // map 데이터 ..
동기와 비동기 차이점에 대해서 알아보자
·
카테고리 없음
동기 처리 방식이란?동기식 처리 모델(Synchronous Processing Model)은 직렬적으로 일을 처리한다.즉, 서버에 요청이 들이어오면 순차적으로 작업을 수행하는 구조이다.현재작업이 끝나기 전에는 그 다음동작은 실행이 되지 않고 대기를 합니다. 장점동기 방식은 일반적으로 간단하고 직관적인 코드로 작성하기 쉽습니다.순차적으로 진행이 되어야지만 원하는 결과가 추출되는 구조에서는 좋습니다. 단점각 작업이 완료될 때 까지 기다려야 하므로 소요시간이 길어지고 이는 곧 프로세스 성능으로 이어질 수 있습니다.또한 한 작업이 지연되면 다른 작업들도 줄지어서 작업이 지연될 문제가 있습니다. 비동기 처리 방식이란?비동기 처리모델이란(Asynchronous Processing Model)은 병렬적으로 일을 처리..