Infra

·Infra
프로젝트를 진행하다보면 고칠 수 있는 노란색 주의문구를 미쳐 발견못하고 커밋-푸시하거나 라인 정렬을 자주 까먹곤한다. 이러한 사소한 녀석들이 각 브랜치에 축척되고 브랜치를 변경해서 작업을 하게되다보면 종국엔 컨플릭트의 근원이 되기도 한다. 이러한 사소한 것들을 바로잡아줄 시스템을 고민하게 되었고 깃훅을 이용해 팀원 간 포맷팅이나 경고 에러잡기 같은 룰을 강제시킬 수 있는 방법을 알게되었다.1. Githook 이란?Git Hook은 Git의 특정 이벤트(예: commit, push, merge)가 발생할 때 자동으로 실행되는 스크립트이다. 이를 활용하면 CI/CD 없이도 개발자 로컬 환경에서 특정 룰을 강제하거나, 자동화된 워크플로우를 실행할 수 있다.  Hook 이름실행시점주요 목적활용 예시pre-com..
·Infra
현재 백엔드 스프링부트의 테스트 서버를 배포중이다. 테스트용이기 때문에 일단 EC2에 띄워두긴 했는데 어쨋든 iOS와 통신을 위해선 HTTPS를 셋팅해둬야했다. HTTPS 설정방법은 크게 두가지이다. 1. Spring Boot 에서 SSL 인증서 사용 (Self-signed 또는 Let's Encrypt 인증서 사용)2. AWS ALB (Application Load Balancer) + ACM (AWS Certificate Manager) 사용 이번 프로젝트에서는 두번째 방법을 선택했다. 이유는 아래와 같다1. Spring Boot 에서 SSL 인증서 사용 (Self-signed 또는 Let's Encrypt 인증서 사용)01. Let's Encrypt 인증서 발급 (certbot certonly --..
·Infra
😭 문제 발생MySQL 8.0 Community Server를 설치하는 과정에서 다음과 같은 오류가 발생했다. 에러로그를 읽어보니 GPG check failed 라고 나오는 것을 확인할 수 있었다.😆 문제 해결 GPG키란?GPG( GNU Privacy Guard ) 키는 소프트웨어 패키지의 무결성과 출처를 확인하는 데 사용되는 디지털 서명 및 암호화 시스템이다. 주로 리눅스에서 패키지를 설치할 때, 해당 패키지가 신뢰할 수 있는 소스에서 제공되었는지 검증하는 역할을 한다. GPG키 사용방법GPG키는 기본적으로 비대칭키 방식으로 동작한다. 01. 저장소(예: MySQL, PostgreSQL, Docker 등)에서 제공하는 공식 GPG 공개 키를 가져온다.sudo rpm --import https://r..
·Infra
문제 상황 feature 브랜치에서 작업이 진행되었고,  develop 브랜치에 머지하려고 할 때 컨플릭트 발생아래와 같은 브랜치 상태에서 develop 브랜치로 변경하려고 하니 변경 사항이 겹쳐서 checkout이 막힌 상황이었다. A --- B --- C --- D --- E --- F --- G (develop, old) \ X --- Y --- Z (feature/chat-list, new)develop 브랜치는 기존 G 커밋에서 멈춰 있었고,feature/chat-list 브랜치에서 X, Y, Z 커밋이 추가됨develop 브랜치로 이동하려고 했지만 변경 사항이 겹쳐버려 컨플릭트가 발생했다.이때 강제로 develop ..
·Infra
🧐 문제 발생Flutter CICD 비용개선을 위해 젠킨스 서버를 온디맨드 인스턴스에서 스팟 인스턴스로 이주했다. 그런데 이상하게 Build 속도는 빠른데 젠킨스 접속속도가 현저하게 느렸다. EC2 모니터링을 보면 CPU도 해봤자 7% 사용하고 있고 네트워크도 정상적인 것 같은데 당최 어떤게 문제인지 알 수가 없었다. 플러그인이 문제인가 싶어서 플러그인도 다 삭제해봤는데 접속속도가 너무 느렸다. 😭🧐 문제 분석 및 해결먼저 속도지연과정을 살펴보자면 아래와 같은 순서이다. 1. 사용자가 브라우저를 통해 젠킨스에 접속한다.2. EC2의 Jenkins Server는 등록된 내부 URL로 HTML, CSS 등의 웹 리소스를 보낸다.3. 만약 내부 URL의 ip와 해당 젠킨스가 배포된 EC2의 public ..
·Infra
🧐 문제상황 매일 새벽 5시마다 플러터 프로젝트 develop 브랜치에서 단위테스트를 실행시키고자 했다. 1. 이를 위해 EC2에 도커로 젠킨스를 배포했다.2. Flutter 는 Docker Hub 에 마땅한 이미지가 없어서 (개인이 올려놓은 플러터 이미지가 있긴했는데 스타수가 워낙 낮아 신뢰하기 어려웠다.) EC2 로컬에 직접 설치한상태였다. 이 상태에서 파이프라인 스크립트를 작성하고 build 를 해보았더니 젠킨스가 flutter 파일을 찾지못하고 failure해버리는 이슈가 발생했다.☺️ 문제 원인 분석 및 해결Jenkins가 Docker 컨테이너로 실행되면, 컨테이너는 자체 격리된 파일 시스템을 사용한다. 따라서, EC2 로컬에 설치된 Flutter와 Android SDK 경로를 인식하지 못하고..
·Infra
OpenStack 개요OpenStack은 오픈소스 클라우드 인프라 관리 플랫폼이다. 주로 프라이빗 클라우드 환경에서의 자율적이고 맞춤형 인프라 관리를 위해 사용된다. 보안, 데이터 통제, 맞춤형 설정, 비용 절감 등 여러 측면에서 프라이빗 클라우드에 최적화된 툴이다. 특히 데이터 주권이 중요하거나 퍼블릭 클라우드로 전환이 어려운 산업에서는 OpenStack을 통한 프라이빗 클라우드 구축이 용이할 수 있다. AWS와 OpenStack, VMware 와 OpenStack 차이차이점을 알아보기에 앞서 AWS, VMWare, OpenStack의 공통점부터 알아보자. 셋 모두 Iaas라는 공통점이 있다. Iaas란 Infrastructure as a service의 약자로 가상화된 컴퓨팅 자원(예: 서버, 네트워..
·Infra
온프레미스로 구축할 때는 보통 Type1 하이퍼바이저를 이용해 물리자원을 가상화하여 분배한다. Type1 하이퍼바이저로 ESXi를 사용하는 인프라 구축방법에 대해 알아보자. ESXi를 사용하면 물리 자원을 가상화하여 효율적으로 분배할 수 있다. 특히 여러 국가나 지역에 있는 물리 서버에 ESXi를 설치하고, 네트워크로 연결해 통합 관리하면, 마치 하나의 거대한 데이터센터처럼 사용할 수 있다.  예를 들어 영국, 일본, 미국 등에 각각 ESXi 서버를 배포하여 CPU와 메모리 자원을 제공하고 한국에 위치한 중앙 데이터센터에서 데이터 저장소를 관리할 수 있다. 이러한 인프라 구조에서 데이터에 대한 접근은 iSCSI(Internet Small Computer Systems Interface) 프로토콜을 통해 ..
·Infra
하이퍼바이저란? 하이퍼바이저는 물리 서버 위에서 여러 가상 서버 인스턴스(VSI)를 만들어내는 소프트웨어이다. 하이퍼바이저(Hypervisor)의 어원을 살펴보면 "하이퍼-" 는 "초월적인" 또는 "더 높은 단계의" 라는 의미를 가지고 있어 하이퍼바이저가 물리적인 하드웨어 위에서 가상 시스템을 관리하는 소프트웨어임을 나타내고 "바이저(Visor)" 는 "관리자" 또는 "감시자"라는 뜻으로, 하이퍼바이저가 물리적 자원을 감독하고 가상 머신이 이 자원을 잘 활용하도록 관리하는 역할을 한다는 것을 알 수 있다. 즉 하이퍼바이저는 물리적 자원을 초월해 여러 가상 머신을 관리하는 상위 관리자라는 의미를 내포하고 있다. 컴퓨터 부팅될 때 물리적 하드웨어에서 시작해 운영체제가 메모리에 올라가고 프로그램들이 실행되는데..
flutter developer
'Infra' 카테고리의 글 목록