직관적인느낌

로봇환경에 DevOps 도입하기 본문

공학/시스템 설치 및 설정

로봇환경에 DevOps 도입하기

범슐랭 2025. 2. 18. 07:21
728x90
반응형

1. DevOps 문화의 중요성

DevOps 문화는 개발과 운영의 경계를 허물어 협업과 자동화를 촉진합니다.

협업 강화: 팀원 간의 정기 회의, 코드 리뷰, 페어 프로그래밍 및 이슈 관리 도구(Jira, GitLab Issues 등)를 통해 소통과 협력을 활성화합니다.

자동화와 지속적 개선: CI/CD 파이프라인을 도입하여, 코드 변경 시 자동 빌드, 테스트, 배포 및 피드백을 통해 문제점을 빠르게 수정할 수 있습니다.

실패를 통한 학습: 작은 변화에 대해 빠르게 실험하고, 실패를 통해 배우는 문화를 만들어 문제를 조기에 발견하고 개선할 수 있습니다.


2. 주요 도구 및 인프라

1) 코드 관리 및 협업 도구

1-1) Git 및 GitLab/GitHub:
버전 관리와 협업을 위한 필수 도구입니다. 코드의 변경 내역을 추적하고, 브랜치 전략을 통해 안정적인 배포가 가능합니다.

1-2) 이슈 관리:
Jira, GitLab Issues, Trello 등을 활용하여 프로젝트 진행 상황과 버그, 기능 개선 사항을 체계적으로 관리합니다.


2) 빌드 및 패키지 관리

2-1) CMake:
C++ 프로젝트에서 일관된 빌드 환경을 구성하는데 유용하며, 다양한 플랫폼 지원이 가능합니다.

2-2) Conan:
C++ 라이브러리 의존성 관리를 자동화해 재현 가능한 빌드를 가능하게 합니다. CI 파이프라인과 연동하여 필요한 라이브러리의 설치와 업데이트를 자동화할 수 있습니다.


3) 컨테이너화 및 환경 관리

3-1) Docker:
개발 환경과 배포 환경의 일관성을 보장하기 위해 Docker를 활용합니다.

개발 환경: Ubuntu 22.04 기반 Docker 이미지로 팀원 모두 동일한 환경에서 작업 가능

배포 환경: 컨테이너를 통해 쉽게 배포 및 스케일링이 가능하며, SLAM/Navigation 같이 하드웨어와 밀접한 작업에서도 시뮬레이터와 결합해 테스트 환경을 구축할 수 있습니다.


4) CI/CD 파이프라인 구축

4-1) Jenkins, GitLab CI/CD, GitHub Actions:
코드 푸시 시 자동 빌드, 테스트, 정적 분석 도구(예: clang-tidy, cppcheck)를 실행하여 품질을 보장합니다.

4-2) 자동화 테스트:
단위 테스트, 통합 테스트, 그리고 로봇 시뮬레이터를 통한 테스트 자동화를 통해 변경 사항이 시스템 전반에 미치는 영향을 최소화합니다.


4-3) 모니터링 및 로깅

- Prometheus & Grafana:
배포된 애플리케이션의 상태와 성능을 모니터링하고, 실시간으로 시각화할 수 있습니다.

- ELK 스택 (Elasticsearch, Logstash, Kibana):
로그 데이터를 체계적으로 수집, 분석하여 문제 발생 시 빠르게 대응할 수 있습니다.


4-4) 인프라 구축 방향

- 클라우드 vs. 온프레미스:
초기에는 AWS, GCP, Azure와 같은 클라우드 서비스를 활용하거나, 사내 서버에서 온프레미스 환경을 구축해 DevOps 환경을 구성할 수 있습니다.

- 컨테이너 오케스트레이션:
Kubernetes와 같은 도구를 활용해 다수의 컨테이너를 효율적으로 관리하고, 자동 배포 및 스케일링을 지원할 수 있습니다.

- 가상 테스트 환경:
하드웨어와 유사한 가상 환경을 구성하여, 실제 로봇 장비에 의존하지 않고도 개발과 테스트를 수행할 수 있습니다.

3. Conan과 Docker 활용 사례

Conan

의존성 관리 자동화:
프로젝트에 필요한 라이브러리 의존성을 Conan을 통해 관리하면, 라이브러리 버전 및 설치 과정을 자동화할 수 있습니다.

CI 파이프라인 통합:
코드 변경 시 Conan 명령어를 실행하여 항상 최신 라이브러리 상태를 유지하도록 하여, 재현 가능한 빌드를 보장합니다.


Docker

개발 환경 컨테이너화:
팀원 간 환경 차이를 최소화하기 위해 Docker를 사용합니다. 동일한 컨테이너 이미지를 통해 누구나 동일한 환경에서 개발할 수 있습니다.

Docker Compose:
빌드 서버, 테스트 서버, 모니터링 툴 등 여러 서비스를 하나의 구성 파일로 관리하여 전체 인프라를 손쉽게 운영할 수 있습니다.

GPU 지원 컨테이너:
NVIDIA Docker와 같은 도구를 통해 SLAM/Navigation 개발 시 하드웨어 가속 기능을 활용할 수 있습니다.


4. 단계별 DevOps 도입 전략

1) 현 상태 분석:
기존 개발 및 배포 프로세스를 분석해 병목 현상과 수동 작업을 파악합니다.


2) 파일럿 프로젝트 진행:
소규모 파일럿 프로젝트에 DevOps 도구(GitLab CI, Docker, Conan 등)를 적용해 보고 문제점과 개선점을 확인합니다.


3) 자동화 파이프라인 구축:
CI/CD 파이프라인을 도입하여 빌드, 테스트, 배포 과정을 자동화합니다.


4) 도구 및 인프라 확장:
파일럿 피드백을 반영해 전체 프로젝트로 확장하며, 모니터링 및 로깅 시스템을 추가로 도입합니다.


5) 교육과 문서화:
팀원들이 새로운 도구와 프로세스에 익숙해지도록 교육하고, 관련 문서를 체계적으로 작성합니다.


마무리

DevOps 문화를 도입하면 개발부터 배포까지의 모든 과정을 자동화하고, 팀 내 협업을 강화해 모바일 로봇과 같은 복잡한 SLAM/Navigation C++ 프로젝트에서 큰 효율성을 얻을 수 있습니다. Conan과 Docker와 같은 도구들을 적절히 활용하면, 재현 가능한 빌드와 일관된 개발 환경을 유지할 수 있어 프로젝트의 품질과 생산성이 크게 향상됩니다.

이 포스트가 여러분의 DevOps 도입에 도움이 되길 바랍니다.

728x90
반응형