[BOOK] 러닝 깃허브 액션 – 브렌트 래스터 지음 / 정의형, 정한결 옮김
![[BOOK] Learning GitHub Actions](https://jaewook.blog/wp-content/uploads/2024/06/2024-06-23-09.00.26.jpg?w=300)
부제: “깃허브로 시작하는 지속적 통합 및 배포 자동화”
소프트웨어를 개발하려면 어떤 소프트웨어가 필요할까요?
ChatGPT에게 물어보면 열두 가지 항목의 여러 소프트웨어 도구를 알려줍니다.
– 통합 개발 환경(IDE), 소스 코드 관리, 빌드 도구, 패키지 관리, 테스트 도구, 디버깅 도구, 데이터베이스 관리 도구, 협업 도구, 클라우드 플랫폼 및 서비스, 문서화 도구, 프레임워크, 기타 유틸리티
이렇게 많은 소프트웨어가 왜 필요할까요?
소프트웨어 개발을 ‘함께’ 하기 때문입니다.
혼자 코딩을 연습한다면 웹브라우저만있어도 가능합니다. 소스코드를 파일로 남기려면 텍스트 에디터와 사용할 언어의 빌드 도구만 있으면 되겠네요. 복잡한 프레임워크를 활용하려면 IDE를 활용하는 것이 효율적이고, 데이터베이스도 사용해야 하니 데이터베이스 관리 도구도 하나 있으면 편할 겁니다.
이제 친구들과 소프트웨어 개발 프로젝트를 진행한다고 생각해 봅시다. 여러 친구들이 매번 모이기 힘들테니 협업 도구가 있어야 할 것 같습니다. 그리고 각자 작성한 코드를 모아서 관리할 방법이 필요할 것 같군요. 또한, 나누어 만든 소프트웨어를 여러 부분이 합쳤을 때 잘 동작하는지 확인이 필요합니다. 이때 필요한 것이 지속적 통합(CI; Continuous Integration)입니다. 요즘에는 주로 Git을 사용하기 때문에 GitHub, GitLab 등의 클라우드 서비스를 이용합니다.
친구들과 만든 소프트웨어를 서비스하려고 합니다. 친구중 한 명이 수동으로 배포합니다. Git으로 코드를 다운로드 받아서 로컬 머신에서 빌드하고 서비스 환경에 업로드합니다. 코드 수정이 필요하면 매번 배포할 때마다 한 친구가 고생을 해야 합니다. 이때 필요한 것이 지속적 전달(CD; Continuous Delivery) 또는 지속적 배포(CD; Continuous Deployment)입니다. 배포를 자동화하는 것이죠.
GitHub는 Git을 기반으로 하는 버전 관리 시스템(VCS; Version Control System)을 클라우드 기반으로 서비스합니다. GitHub Action은 GitHub 서비스에서 CI/CD를 담당합니다. 새롭게 코드가 변경되었을 때 자동화된 빌드, 테스트, 실행이 가능하고, 서비스 환경으로 배포가 가능합니다. CI/CD 도구는 다양하지만 GitHub의 기능과 연계된 다양한 자동화 기능을 활용할 수 있는 점이 GitHub Action의 강점입니다.
‘러닝 깃허브 액션’에서는 코드가 커밋된 시점부터 배포까지의 과정에 필요한 모든 것을 설명합니다. 동작 원리에 대한 설명으로 시작해서 보안, 모니터링에 관련된 고급 기술까지 설명합니다. 마켓플레이스의 액션들을 활용하는 방법, 다른 CI/CD 플랫폼에서 GitHub Action으로 변경하는 방법도 알려줍니다. GitHub Action을 사용하여 CI/CD를 구축하려는 분들에게 도움이 될 정보가 책 한 권에 담겨있습니다.
책을 통해 GitHub Action에 익숙해지면 GitOps로 확장하는 것도 가능합니다. 요즘에는 클라우드를 기반으로 서비스되는 애플리케이션들이 많아지면서 인프라 관리도 코드로 하고 있습니다. IaC(Infrastructure as Code)라고 합니다. 특히 Git을 통해 애플리케이션의 배포와 운영에 대한 모든 요소를 코드화하여 관리하는 것을 GitOps라고 합니다. GitHub Action을 활용하여 인프라도 관리할 수 있는 것이죠. 여기에 PaC(Policy as Code)라는 개념도 소개되고 있어서 Git을 기반으로 하는 자동화 관리 영역이 점점 더 넓어질 것 같습니다. GitHub를 통해 소스코드를 관리하고 있다면 GitHub Action으로 CI/CD부터 정복해보는 것은 어떨까요?
“한빛미디어 [나는 리뷰어다] 활동을 위해서 책을 제공받아 작성된 서평입니다.”