IT 업계에서 Ops로 끝나는 신규 용어가 많은 생기는 이유는 개발과 운영의 경계가 희석되고 협력이 필요한 현대의 소프트웨어 개발 방식에서 DevOps, MLOps, AIOps, FinOps 등 Ops로 끝나는 용어들이 많이 등장하는 것 같습니다. 또한 새로운 기술과 환경에서의 개발, 운영, 보안, 데이터 관리 등을 효과적으로 수행하기 위한 현대적인 방법론과 접근법 등을 제시하여 소프트웨어 개발 및 운영을 진행하기 위한 결과라고 생각됩니다.
IT 업계에서 Ops로 끝나는 신규 용어들을 한번 정리해봤습니다.
DevOps (Development Operations)
DevOps는 개발과 운영 팀 간의 협력을 강조하는 개발 방법론과 문화입니다. 이를 위해 자동화된 프로세스와 도구를 사용하여 소프트웨어의 빠른 개발, 안정적인 배포, 높은 품질을 실현합니다. DevOps는 조직의 협업과 지속적인 개선을 통해 비즈니스 요구에 신속하게 대응하고 소프트웨어를 효율적으로 제공합니다.
DevSecOps (Development, Security, Operations)
DevSecOps는 개발, 운영 및 보안 팀 간의 협력과 통합을 강조하는 개발 방법론 및 문화입니다. 보안을 개발 프로세스의 일부로 통합하여 소프트웨어의 보안 취약성을 최소화하고, 안정성과 신뢰성을 강화합니다. DevOps의 원칙에 보안 측면을 추가하여 조직의 비즈니스 요구에 대한 빠른 대응과 안전한 소프트웨어 개발을 실현합니다.
GitOps (Git Operations)
GitOps는 소프트웨어 배포와 인프라 운영을 Git을 통해 관리하는 개발 방법론입니다. GitOps는 코드와 인프라 상태를 Git 리포지토리에 저장하고, 변경 사항을 Git 워크플로우를 통해 자동으로 배포하고 관리합니다. 이를 통해 표준화된 배포 프로세스, 변경 추적 및 롤백 기능을 제공하여 소프트웨어 시스템을 효율적이고 일관되게 관리합니다.
MLOps (Machine Learning Operations)
MLOps는 머신 러닝 모델의 개발과 운영을 효율적으로 관리하기 위한 방법론과 프로세스입니다. MLOps는 모델 개발, 훈련, 배포, 모니터링 등의 라이프사이클을 자동화하고, 모델의 안정성, 성능, 신뢰성을 보장하기 위해 지속적인 통합과 전달, 자동화된 테스트, 버전 관리 등을 강조합니다. 이를 통해 조직은 머신 러닝 프로젝트를 효율적으로 관리하고 운영 환경에서 안정적으로 모델을 유지할 수 있습니다.
AIOps (Artificial Intelligence for IT Operations)
AIOps는 인공 지능 기술을 활용하여 IT 운영을 자동화하고 향상시키는 방법론입니다. AIOps는 대규모 데이터 분석, 자동화된 이벤트 관리, 예측 및 자가 치유 기능을 통해 장애 예방, 문제 식별 및 대응을 강화합니다. 이를 통해 조직은 IT 시스템의 가용성과 성능을 개선하고, 비즈니스 운영에 필요한 신속한 결정과 대응을 할 수 있습니다.
FinOps (Financial Operations)
FinOps는 클라우드 리소스의 비용을 효과적으로 관리하기 위한 방법론과 프로세스입니다. FinOps는 비용 추적, 예산 설정, 리소스 최적화 등을 통해 클라우드 비용을 투명하게 파악하고 최소화하는데 초점을 둡니다. 이를 통해 조직은 클라우드 리소스의 비용 효율성을 개선하고, 리소스 사용에 대한 가시성과 통제를 강화할 수 있습니다.
BizOps (Business Operations)
BizOps는 비즈니스 운영을 최적화하고 의사 결정을 지원하기 위한 방법론과 프로세스를 의미합니다. 이를 위해 데이터 분석과 비즈니스 인텔리전스를 활용하여 성과를 측정하고 개선합니다. BizOps는 조직 내 다양한 부서 간의 협력과 데이터 기반의 의사 결정을 강화하여 비즈니스 운영을 효율적으로 관리합니다.
DataOps (Data Operations)
DataOps는 데이터 관리 및 데이터 파이프라인의 효율적인 운영을 위한 방법론과 문화를 의미합니다. 데이터 수집, 전처리, 저장, 분석, 공유 등의 단계를 자동화하고 표준화하여 데이터의 품질과 가용성을 개선합니다. DataOps는 개발, 운영, 데이터 과학 등 다양한 팀 간의 협업과 지속적인 개선을 통해 데이터 주도적인 의사 결정과 비즈니스 성과 향상을 목표로 합니다.
CloudOps (Cloud Operations)
CloudOps는 클라우드 환경에서의 운영과 관리를 효율적으로 수행하기 위한 방법론과 프로세스를 의미합니다. 클라우드 서비스의 프로비저닝, 모니터링, 확장성 관리, 보안 및 비용 최적화 등을 중점으로 다룹니다. CloudOps는 클라우드 리소스의 안정성과 가용성을 유지하며, 비즈니스 요구사항에 신속하게 대응하기 위해 자동화와 표준화를 추구합니다.
ChatOps (Chat-based Operations)
ChatOps는 채팅 플랫폼을 활용하여 개발, 운영 및 협업 프로세스를 통합하는 방법론과 문화를 의미합니다. 채팅 도구를 통해 자동화된 작업 실행, 이벤트 모니터링, 협업 및 지식 공유 등을 수행하여 팀 간 커뮤니케이션과 작업 효율성을 향상시킵니다. ChatOps는 실시간 커뮤니케이션과 작업 추적을 결합하여 개발과 운영 과정을 투명하게 관리하고 자동화된 운영을 실현합니다.
SecOps (Security Operations)
SecOps는 보안 운영을 개발 및 운영 프로세스에 통합하는 방법론과 문화를 의미합니다. 개발과 운영 팀이 보안 측면에서 협력하고, 보안 사고를 예방하고 탐지하며, 대응 및 복구를 수행합니다. SecOps는 보안 요구 사항을 사전에 고려하여 시스템을 보호하고, 조직의 데이터와 인프라에 대한 안전성과 신뢰성을 강화합니다.
NetOps (Network Operations)
NetOps는 네트워크 운영을 최적화하고 관리하기 위한 방법론과 프로세스를 의미합니다. 네트워크 장비 및 구성 요소의 설치, 구성, 모니터링, 유지 보수 등을 통해 네트워크의 안정성과 성능을 유지하고 개선합니다. NetOps는 네트워크 트래픽 분석, 장애 대응, 보안 강화 등을 통해 조직의 네트워크 인프라를 효율적으로 운영하여 비즈니스 요구를 충족시킵니다.
NoOps (No Operations)
NoOps는 인프라 관리를 최소화하거나 제거하여 개발팀이 애플리케이션을 자율적으로 배포하고 관리할 수 있는 개발 방법론입니다. 클라우드 컴퓨팅, 서버리스 아키텍처 및 자동화된 운영 도구를 활용하여 인프라 관리 작업을 자동화하고 개발자 중심의 운영을 실현합니다. NoOps를 통해 조직은 더 빠른 소프트웨어 배포와 운영, 높은 효율성을 달성할 수 있습니다.
VSCode에서는 확장 기능을 통해서 여러 기능을 사용할 수 있습니다. 개발 언어 관련 기능 및 테마 등 여러 기능을 사용할 수 있으며 사용하실 개발 언어 관련 확장 기능을 설치하는 것을 추천드립니다.본이 되는 한국어 설정부터 기능을 추가해봅시다.
Extensions 메뉴에서 확장 기능을 추가할 수 있으며 korean을 검색하여 한국어 언어 팩을 추가합니다. 확장 기능에 따라 바로 적용되는 경우와 VSCode를 재시작해야 적용되는 경우가 있으니 혹시 확장 기능 추가 후에도 적용이 안된 것 같으면 한번 VSCode를 재시작하는 것을 추천드립니다.
한국어 언어 팩 추가 및 VSCode 재시작 후 적용되는 것을 확인하실 수 있습니다.
추가적으로 Ctrl + Shift + P 를 입력하면 VSCode 명령어를 입력하실 수 있는데요. language를 입력하여 언어 설정을 변경하실 수 있습니다.
프로젝트 생성 및 실행
프로젝트 디렉토리를 생성하고 WSL 환경에서 실행하는 것을 진행해보도록 하겠습니다. 우선 생성한 프로젝트 디렉토리를 VSCode에서 폴더 열기를 통해 프로젝트 폴더를 연결합니다. 이후 간단히 실행할 코드를 생성해봅시다.
VSCode에서는 상단에 터미널 기능을 사용하여 cmd, powershell 등 여러가지의 터미널을 사용할 수 있습니다. WSL 또한 터미널을 통해 사용할 수 있습니다
WSL에서는 자동으로 Windows 환경의 디렉토리를 /mnt 디렉토리로 마운트하여 사용하기 때문에 Windows 환경에서 파일 또는 디렉토리를 생성하여도 WSL에서 바로 접근하여 사용 가능합니다.
생성한 코드를 WSL 터미널에서 컴파일 후 실행하여 정상적으로 실행되는지 확인합니다.
직접 Window PC에 컴파일러를 설치하여 VSCode에서 컴파일 및 실행이 가능하지만 저는 리눅스 환경에서의 개발을 많이 하다보니 WSL 환경이 더 편하게 느끼고 있습니다. 반드시 WSL 환경에서 컴파일 및 실행을 할 필요는 없으니 직접 사용해보시고 더 편하고 자신에게 더 맞는 환경에서 사용하시면 될 것 같습니다.
본 문서는 Microsoft 공식 문서를 기반으로 작성하였으며 window 10 환경에서 처음 WSL를 설치하시는 분들을 위해 조금 더 쉽게 이해할 수 있도록 작성하였습니다.
WSL라는 것을 알기전에는 개발 환경을 구축하기 위해 가상 머신(Virtual machine) 환경에서 Linux를 설치하여 사용했습니다. 가상 머신으로 개발 환경을 구축하면 속도가 느리고 기본적으로 리소스를 많이 먹기 때문에 불편함이 있었습니다. WSL은 기존 가상 머신과 달리 디스크에 설치하거나 부팅설정도 필요 없어 윈도우 환경에서 더욱 빠르게 Linux 를 사용할 수 있습니다. 또한 소스 코드 에디터인 VSCode(Visual Studio Code)와의 연동이 매우 쉽기 때문에 사용하기 좋습니다.
1. WSL (Linux용 Windows 하위 시스템) 기능 추가
WSL 기능은 windows 자체 기능으로 Windows 기능 추가를 통해 Linux용 Windows 하위 시스템을 설치합니다.
Windows 기능 켜기/끄기 선택
Linux용 Windows 하위 시스템을 설치
2. WSL 버전 2 설정
WSL2를 사용하려면 Virtual Machine 플랫폼 옵션을 사용하도록 설정해야 하므로 명령 프롬프트 또는 Powershell 에서 아래 기능 활성화 명령어를 입력하여 기능을 활성화 해줍니다.
Virtual Machine 플랫폼 기능 활성화 및 Linux 커널 업데이트를 완료하면 WSL 기본 버전을 2로 설정합니다.
wsl --set-default-version 2
3. Ubuntu 설치
WSL(Linux용 Windows 하위 시스템) 설치 후 Microsoft Store에서 최신 버전 또는 원하는 OS를 선택하여 설치합니다. 설치한 OS 실행 시 아래와 같이 정상적으로 실행되며 사용자 계정 생성 후 사용하시면 됩니다.
OS 설치
wsl -l -v 명령어를 통해 WSL에 설치된 OS를 확인하실 수도 있습니다.
4. 기타 설정
4.1 기본 접속 계정 변경
Ubuntu를 기준으로 최초 OS 설치 후 생성한 사용자 계정을 기본 접속 계정이 설정되기 때문에 Ubuntu 실행 시 root 계정으로 바로 접속할 수 있도록 기본 접속 계정을 변경할 수 있습니다. 설정 이후 WSL를 재시작하면 변경된 접속 계정으로 바로 접속되는 것을 확인하실 수 있습니다.
설정 포맷 : {os name} config --default-user {기본 접속 계정}
ubuntu2204 config --default-user root