SK네트웍스 Family AI 캠프 1기 11주차 회고
SK Networks AI Camp
Weekly 회고 - 11주차
포스트를 읽기 전에..
이 포스트는 SK네트웍스 Family AI 캠프를 다니면서 느낀 개인적인 생각을 정리한 포스트입니다.
배운 내용이나 스킬셋에 대한 설명은 별도로 작성하지 않았기 때문에, 그에 대한 정보는 다른 포스트를 참고해주세요!
Liked
7월 3째주, 11주차 회고로 인사드립니다.
이번 주의 좋았던 점은 AWS 강의를 시작했다는 것입니다.
평소에 클라우드나 도커 같은 스킬셋을 배워보고 싶다는 생각을 했었는데, 그 바람을 이룰 수 있게 되어 기분이 좋습니다!
이번 주에는 예전에 구현해봤던 게시판 기능을 CI/CD로 배포하는 것까지 진행하였습니다.
이미 구현해봤던 기능에 CI/CD만 더해지는 것이라서 금방 끝날 줄 알았는데 새로 작성할 내용도 생각보다 많고, 예상치 못한 오류도 많이 발생해서 생각보다 어렵게 마무리됐습니다.
다소 어려움이 있었지만, 배포까지 경험해보았다는 것만으로도 충분히 좋은 한 주였습니다.
Learned
이번 주에 배운 내용은 CI/CD입니다.
CI/CD란?
-
CI(Continuous Integration)
- 지속적 통합: 코드를 통합하여 빌드하고 테스트하는 프로세스
- 모든 변경사항이 지속적으로 병합되고 테스트되어 문제를 조기에 발견하고 해결할 수 있음
- 주요 목표는 코드 품질을 유지하고 개발 주기를 단축하는 것
-
CD(Continuous Deployment)
- 지속적 배포: CI 프로세스 후, 애플리케이션의 업데이트를 자동으로 프로덕션 환경에 배포하는 과정
- 변경 사항이 안정적으로 배포되도록 보장
- 개발, 테스트, 배포 과정이 자동화되어 개발 속도가 빨라짐
Github Actions
강의에서는 Github Actions를 이용하여 CI/CD를 구성하였습니다. 그렇다면 Github Actions는 무엇일까요?
Github Actions는 Github에서 제공하는 CI/CD 도구로, 코드 레포지토리에 특정 이벤트가 발생할 때,
작업을 자동으로 실행할 수 있습니다. 예를 들어, 코드 푸쉬, PR 생성, Issue 생성 등이 있습니다.
주요 개념
-
Workflow
- 하나 이상의 job으로 구성된 자동화된 프로세스
-
.github/workflows
디렉토리에 yml 파일로 정의됨
-
Job
- Workflow 내에서 실행되는 개별 작업 단위
- 각 job은 여러 개의 step으로 이루어짐
- 기본적으로 job은 서로 독립적으로 실행됨
-
Step
- job 내에서 실행되는 개별 명령어 또는 액션
- 셸 스크립트 명령어 또는 사전 정의된 액션을 실행 할 수 있음
-
Action
- 특정 작업을 수행하는 독립적인 컴포넌트
- Ex) 코드 빌드, 테스트 실행 등
요 약
장점 CI/CD를 구성할 때의 장점은 아래와 같습니다.
-
자동화된 빌드와 테스트
- 코드 변경 시 자동으로 빌드하고 테스트를 실행하여 문제를 빠르게 발견할 수 있음
- 수작업을 줄임으로써 보다 중요한 개발 작업에 집중 가능
-
빠른 피드백
- 코드 변경 사항에 대한 피드백을 신속하게 제공하여 버그를 조기에 발견하고 수정할 수 있음
- 코드 리뷰와 병합 과정이 원활하게 이루어짐
-
지속적인 배포
- 새로운 기능이나 수정 사항을 빠르게 배포하여 사용자에게 제공할 수 있음
- 자동화된 배포로 인해 오류가 감소하고 안정적인 릴리즈가 가능함
-
일관성
- 동일한 빌드 및 배포 프로세스를 통해 일관된 환경을 유지 가능
- 환경 간 설정 차이로 인한 문제를 최소화
-
팀 협업 강화
- 코드 품질을 유지하면서 여러 개발자가 동시에 작업할 수 있음
- 통합된 빌드와 테스트 결과를 통해 협업 효율성을 높일 수 있음
주의할 점
-
초기 설정 및 유지 보수
- CI/CD 파이프라인을 처음 구성하는데 시간이 오래 걸릴 수 있음
- 유지보수와 업데이트가 필요하며 프로젝트 규모가 커질수록 더 많은 관리가 필요함
-
보안 문제
- CI/CD 파이프라인에 민감한 정보가 자격 증명을 포함할 경우, 보안에 신경 써야 함
- Secret을 이용하는 방법 등을 이용하여 보안을 강화해야 함
-
테스트 품질
- 테스트의 커버리지가 낮거나 품질이 좋지 않으면 CI/CD의 구성하는 이점이 사라짐
- 신뢰성 높은 테스트를 작성해야 함
-
리소스 관리
- 서버 리소스를 사용하므로, 리소스 사용량과 비용을 고려해야 함
- 필요에 따라 실행 환경을 조정하거나 자원을 효율적으로 관리하는 방법을 고려해야 함
-
복잡성 관리
- 파이프라인을 잘 문서화하고, 모듈화하여 관리해야 함
-
환경 설정 일관성
- 개발, 스테이징, 프로덕션 환경 간의 설정 차이로 인해 문제가 발생할 수 있음
- 환경별 설정을 관리하고 일관성을 유지하도록 신경써야 함
Lacked
이번 주에 제가 생각한 부족한 점은 AWS와 CI/CD에 대한 이해도입니다.
AWS를 처음 사용해봐서 강의에서 사용하는 어휘나 웹페이지 자체가 낯설어서 초반에 강의를 따라가기 힘들었습니다. ‘캠프에 들어오기 전에 조금이라도 공부해두었다면 좋았을텐데’ 라는 생각을 했습니다. 그래도 강사님께서 잘 설명해주셔서 따라하다보니까 이번 주 목표를 달성할 수 있었습니다.
위와 같은 의미로 ‘CI/CD에 대한 공부도 미리 했었다면 좋았을텐데’ 라는 생각을 했었습니다. CI/CD도 현업에 가면 자주 사용하는 개념일텐데 여태까지 아예 몰랐다는 것 자체가 스스로에게 아쉬웠던 점이었습니다. 그래도 위에 배운 점을 작성하면서 어느정도 개념 정리가 되어서 처음 배울 때보다는 이해도가 높아진 것 같다는 생각이 듭니다.
Longed for
앞으로 바라는 점은 저를 포함한 모든 수강생들이 포기하지 않고 끝까지 진행했으면 좋겠다는 것입니다.
이번 주 CI/CD를 구성하고 AWS를 사용하는 내용 자체의 난이도가 높다보니, 따라가기 힘들다고 생각하는 사람들도 있을 것 같습니다. 저도 처음에는 그랬고, 사실 지금도 이해했다고 말하기는 어렵지만 강의 내용을 꾸준히 따라가다보니 신기하게도 무언가 만들어지고 있었습니다. 다른 분들도 열심히 따라가다보면 무언가 완성되어 뿌듯함을 느낄 수 있을겁니다!!
그리고 제 스스로 바라는 점은 강의만 열심히 듣는 것이 아니라 강의 외적으로, 앞으로 공부하게 될 부분에 대해서도 미리 공부하는 사람이 되었으면 합니다. 후에 배우게 될 LLM을 대비해서 RNN, Attention, Transformer 공부를 조금씩이라도 진행할 수 있었으면 좋겠습니다. 다음 주의 제가 해낼 수 있을 것이라고 믿습니다!
이번 주도 다들 고생많으셨고 스스로 고생했다고 칭찬해줄 수 있는 여러분이 되었으면 좋겠습니다.
조금만 더 힘내봅시다!