반응형

고기 대신 SW 한점/DEVOPS 10

Mac(M1,M2)에 ubuntu 가상환경 설치

리눅스 시스템을 로컬 환경에서 구성할 수 있는 Case가 아래와 같이 크게 4가지 방법이 있습니다. 위 환경 중 많은 사용자들은 3번째의 환경을 설치하시는 것으로 알려져 있고 가상머신이 필요합니다. 윈도우 커뮤터에서는 가상머신으로 VMWare를 이용을 하고 있습니다. 하지만, 윈도우에서는 무료로 사용가능한 VMWare와 패러렐즈도 Mac에서는 돈을 받고 있습니다. 오늘 설치하려는 VirturalBox는 Mac에서 무료로 사용가능합니다. 1. Ubuntu Server 다운 받기 - ubuntu.com에서 Ubuntu Server를 다운 받는다. 우분투는 Desktop version과 Server version을 받을 수 있는데요... Desktop version은 GUI로 사용이 가능합니다. 단지 GUI ..

VS Code + AI CodeHelper, ChatGPT

ChatGPT가 장안에 화제가 된지는 꽤 오래 되었습니다. ChatGPT4.0의 경우는 기존 3.5에 비하여 변수가 조단위로 변경된다고 합니다. 완전 다른 성능을 보여준다고 기대할 수 있습니다. 여기서 기대한다는 것이 맞는 말인지 모르겠습니다. 터미네이터의 영화처럼... AI로 인한 인류 존속의 문제가 될 수 있는 특이점이 이미 넘었다는 사람도 있습니다. 아무튼 개발자가 많이 쓰는 VS Code 개발툴에 AI와 ChatGPT를 AddOn 시키는 간단한 방법에 대해서 제안드립니다. AICodeHelper - Visual Studio Code 1. Select Extentions 2. Serch AICodeHelper & AICodeHelper install 3. Select Code - Perference..

GitHub Self-Hosted Runner에서 캐시를 구현하는 방법

Cache Action을 사용하기 GitHub에서는 캐시를 쉽게 구현할 수 있는 Cache Action을 제공합니다. 이 Action을 사용하면 원하는 디렉토리를 캐시할 수 있습니다. 캐시를 만들기 위해서는 캐시 이름과 캐시할 파일 또는 디렉토리를 지정해야 합니다. 예를 들어, 다음과 같은 형식으로 작성할 수 있습니다. yaml - name: Cache node_modules uses: actions/cache@v2 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- 이 작업은 node_modules 디렉토리를 ~/.npm 경로에 캐..

[DevOps] CICD - Github Actions 알아보기

GitHub Actions라고 하는 것은 구체적으로 어떤 것일까? GitHub Actions는 GitHub에서 코드와 함께 실행되는 기본 CI/CD 툴입니다. 실제로 GitHub 저장소(힌트: GitHub Actions가 있는 곳)에 "Actions"라고 표시된 탭이 있습니다. [출처] GitHub의 CI/CD 및 자동화 초보자 가이드 제1장|작성자 단군소프트 Github 한국 총판인 단군소프트에서는 위와 같이 Github Actions에 대해서 설명을 시작하고 있습니다. Microservice-based SaaS Product GitHub Cloud(또는 GitHub.com)는 Git-Server-Engine를 Public SaaS 로 제공되는 서비스입니다. Git repository와 organiza..

[DevOps] CI (Continuous Integration) 완전 정복

GitHub repository에 관리되는 Microservice의 CI(Continuous Integration)는 아래 관심사와 책임 원칙을 갖는다. 레포지토리의 관심사 실행가능한 상태의 애플리케이션을 생산하기 위해서 필요한 정적인 정보를 보관하고 추적한다. (소스코드, CI 워크플로우 스크립트, etc) 워크플로우의 관심사 소스코드로부터 생산되는 아티팩트가 SOT(Source of Truth) 로 사용될 수 있도록 자동화로 CI를 완수한다. 자동화된 테스트 및 각종 검증 결과(pass/fail)를 PR(pull requet)에 제공한다: Gated check-in 아티팩트 생산 책임 Containerized Application (Image Tag) → Saved in ECR repository A..

[DevOps] CD, Routing 컨트롤을 통한 Rollout 방안

셋탑 위치(지역) 기반 테스트용 vs 일반 사용자 요금별(유료 고객 vs 무료 고객) Feature Flag Ramdom(Weighted) Flow Diagram 구성의 예> API Path에 따라 stable(blue) 또는 preview(green)으로 라우팅되도록 구성하였습니다. 롤 아웃 진행중에 preview(green) 환경으로 트래픽을 보내기 위해서는 특정 트래픽의 요청 path를 변경해야 합니다.(API GW에서 구성) 모든 POD를 새버젼(Green Pod)로 보내기 전에 weight에 따라 stable/preview 환경으로 트래픽 전달 특정 시간동안 일부 트래픽을 랜덤으로 Green 환경으로 배포 후 요청 사항을 수집하여 자동/수동으로 Promotion 진행 인증 POD에서 인증정보(s..

[Helm] k8s package manger - 낱낱이 알아보기

Intro helm은 kubernetes cluster에 어플리케이션을 배포하는 도구입니다. 쿠버네티스를 운영할때 단일 클러스터만으로 운영하는 경우는 흔치 않습니다.결국 애플리케이션을 여러 클러스터에 배포해야하는데, 이 과정에서 발생하는 관리 이슈가 생길 수 있습니다. 서비스의 경우는 그렇다 쳐도, 인그레스와 같이 호스트가 지정된 정보들의 경우 클러스터마다 상이하게 설정해야하는데 클러스터마다 매니패스트를 따로관리하는것도 문제입니다. 따라서 환경에 따라 달라지는 값만 정의해두고 이에 따라 배포하는 메커니즘이 필요하며 이를 해결하는것이 바로 “헬름” 입니다. Helm 이란? helm은 deis라는 회사에서 시작한 Helm Classic 프로젝트와 Google에서 진행되던 GCS Deployment Manag..

[istio] Circuit Break 구현

마이크로 서비스 아키텍처에서 문제중 일반적인 것은 cascading failure을 꼽을 수 있습니다. 어떤 이유로 서비스가 응답하지 않는 경우, 서비스에 request를 계속해서 보내면 latency가 길어지고 그에 따른 서비스에 불필요한 부하가 발생할 여지가 있습니다. 마이크로 서비스의 경우 다양한 서비스로 구성되는데, A 서비스와 B 서비스가 연계되어 있을 경우 다른 서비스의 부하로 이어지는데 이런 현상을 cascading failure라 한다. 이런 현상을 circuit breaking을 통해 과부하된 서비스의 연결을 끊고 서비스가 회복할 시간을 줄 수 있게하여 장애를 처리할 수 있게 됩니다. Destination rule에서 또는 value에서 이용하여 circuit break 설정이 가능합니다..

[Backend] 개발 환경 구성 : 끝장내기

AWS상에서 Backend 개발을 위한 기본 환경 구성에 대해서 간단한 예제를 정리하였습니다. Getting Started 로컬 환경 구성 로컬 project-서비스 Spring boot 환경 구성 General Project Structure VS Code IDE 설치 개발툴은 개별 취향에 맞게 선택 여기서는 vscode 기준 VS Code(https://code.visualstudio.com/) eclipse intelliJ 등 VS Code Extensions 개발을 위한 필수 Extention Spring Initializr Java Support - 스프링 프로젝트 만들때 템플릿 Spring Boot Extension Pack - 스프링 개발에 필요한 익스텐션 Spring Boot Tools -..

Code Convention

‘Code Convention(코드 컨벤션)’이란, 특정 프로그래밍 언어에 권장되는 프로그래밍 스타일에 대한 가이드를 의미합니다. 소프트웨어 유지보수성이 요구되는 Microservice에서는 반드시 설정 및 자동화하기를 권장합니다. 요약 개발팀이 얻는 이익 팀 내 표준 코딩 방식 적용: 코드 품질 향상화 기반 제공 코드 변경 복잡도 감소: 리랙토링 시 형식이 아닌 내용에 집중할 수 있도록 하여 커뮤니케이션 비용 절약 의미있는 코드 볼륨 정보 제공: 일관된 형식으로 변경 사항이 저장된 커밋에서 DevOps 지표 수집 가능 도입시 고려할 지점 오픈소스 검토: 해당 언어의 커뮤니티에서 공통적으로 선택하는 옵션 고려 개발팀이 선택한 패키지 매니저와의 연동 여부: build 프로세스로 자동화할 수 있도록 적용 개..

반응형