Post

SK네트웍스 Family AI 캠프 1기 11주차 회고

SK Networks AI Camp

Main image

Weekly 회고 - 11주차

:warning: 포스트를 읽기 전에..
이 포스트는 SK네트웍스 Family AI 캠프를 다니면서 느낀 개인적인 생각을 정리한 포스트입니다.
배운 내용이나 스킬셋에 대한 설명은 별도로 작성하지 않았기 때문에, 그에 대한 정보는 다른 포스트를 참고해주세요!

:thumbsup:Liked

7월 3째주, 11주차 회고로 인사드립니다.
이번 주의 좋았던 점은 AWS 강의를 시작했다는 것입니다.
평소에 클라우드나 도커 같은 스킬셋을 배워보고 싶다는 생각을 했었는데, 그 바람을 이룰 수 있게 되어 기분이 좋습니다!
이번 주에는 예전에 구현해봤던 게시판 기능을 CI/CD로 배포하는 것까지 진행하였습니다.
이미 구현해봤던 기능에 CI/CD만 더해지는 것이라서 금방 끝날 줄 알았는데 새로 작성할 내용도 생각보다 많고, 예상치 못한 오류도 많이 발생해서 생각보다 어렵게 마무리됐습니다.:sob:
다소 어려움이 있었지만, 배포까지 경험해보았다는 것만으로도 충분히 좋은 한 주였습니다.


:books:Learned

이번 주에 배운 내용은 CI/CD입니다.

CI/CD란?

  1. CI(Continuous Integration)
    • 지속적 통합: 코드를 통합하여 빌드하고 테스트하는 프로세스
    • 모든 변경사항이 지속적으로 병합되고 테스트되어 문제를 조기에 발견하고 해결할 수 있음
    • 주요 목표는 코드 품질을 유지하고 개발 주기를 단축하는 것
  2. CD(Continuous Deployment)
    • 지속적 배포: CI 프로세스 후, 애플리케이션의 업데이트를 자동으로 프로덕션 환경에 배포하는 과정
    • 변경 사항이 안정적으로 배포되도록 보장
    • 개발, 테스트, 배포 과정이 자동화되어 개발 속도가 빨라짐

Github Actions

강의에서는 Github Actions를 이용하여 CI/CD를 구성하였습니다. 그렇다면 Github Actions는 무엇일까요?

Github Actions는 Github에서 제공하는 CI/CD 도구로, 코드 레포지토리에 특정 이벤트가 발생할 때,
작업을 자동으로 실행할 수 있습니다. 예를 들어, 코드 푸쉬, PR 생성, Issue 생성 등이 있습니다.

주요 개념

  1. Workflow
    • 하나 이상의 job으로 구성된 자동화된 프로세스
    • .github/workflows 디렉토리에 yml 파일로 정의됨
  2. Job
    • Workflow 내에서 실행되는 개별 작업 단위
    • 각 job은 여러 개의 step으로 이루어짐
    • 기본적으로 job은 서로 독립적으로 실행됨
  3. Step
    • job 내에서 실행되는 개별 명령어 또는 액션
    • 셸 스크립트 명령어 또는 사전 정의된 액션을 실행 할 수 있음
  4. Action
    • 특정 작업을 수행하는 독립적인 컴포넌트
    • Ex) 코드 빌드, 테스트 실행 등

요 약

장점 CI/CD를 구성할 때의 장점은 아래와 같습니다.

  1. 자동화된 빌드와 테스트
    • 코드 변경 시 자동으로 빌드하고 테스트를 실행하여 문제를 빠르게 발견할 수 있음
    • 수작업을 줄임으로써 보다 중요한 개발 작업에 집중 가능
  2. 빠른 피드백
    • 코드 변경 사항에 대한 피드백을 신속하게 제공하여 버그를 조기에 발견하고 수정할 수 있음
    • 코드 리뷰와 병합 과정이 원활하게 이루어짐
  3. 지속적인 배포
    • 새로운 기능이나 수정 사항을 빠르게 배포하여 사용자에게 제공할 수 있음
    • 자동화된 배포로 인해 오류가 감소하고 안정적인 릴리즈가 가능함
  4. 일관성
    • 동일한 빌드 및 배포 프로세스를 통해 일관된 환경을 유지 가능
    • 환경 간 설정 차이로 인한 문제를 최소화
  5. 팀 협업 강화
    • 코드 품질을 유지하면서 여러 개발자가 동시에 작업할 수 있음
    • 통합된 빌드와 테스트 결과를 통해 협업 효율성을 높일 수 있음

주의할 점

  1. 초기 설정 및 유지 보수
    • CI/CD 파이프라인을 처음 구성하는데 시간이 오래 걸릴 수 있음
    • 유지보수와 업데이트가 필요하며 프로젝트 규모가 커질수록 더 많은 관리가 필요함
  2. 보안 문제
    • CI/CD 파이프라인에 민감한 정보가 자격 증명을 포함할 경우, 보안에 신경 써야 함
    • Secret을 이용하는 방법 등을 이용하여 보안을 강화해야 함
  3. 테스트 품질
    • 테스트의 커버리지가 낮거나 품질이 좋지 않으면 CI/CD의 구성하는 이점이 사라짐
    • 신뢰성 높은 테스트를 작성해야 함
  4. 리소스 관리
    • 서버 리소스를 사용하므로, 리소스 사용량과 비용을 고려해야 함
    • 필요에 따라 실행 환경을 조정하거나 자원을 효율적으로 관리하는 방법을 고려해야 함
  5. 복잡성 관리
    • 파이프라인을 잘 문서화하고, 모듈화하여 관리해야 함
  6. 환경 설정 일관성
    • 개발, 스테이징, 프로덕션 환경 간의 설정 차이로 인해 문제가 발생할 수 있음
    • 환경별 설정을 관리하고 일관성을 유지하도록 신경써야 함

:face_with_spiral_eyes:Lacked

이번 주에 제가 생각한 부족한 점은 AWS와 CI/CD에 대한 이해도입니다.
AWS를 처음 사용해봐서 강의에서 사용하는 어휘나 웹페이지 자체가 낯설어서 초반에 강의를 따라가기 힘들었습니다. ‘캠프에 들어오기 전에 조금이라도 공부해두었다면 좋았을텐데’ 라는 생각을 했습니다. 그래도 강사님께서 잘 설명해주셔서 따라하다보니까 이번 주 목표를 달성할 수 있었습니다.
위와 같은 의미로 ‘CI/CD에 대한 공부도 미리 했었다면 좋았을텐데’ 라는 생각을 했었습니다. CI/CD도 현업에 가면 자주 사용하는 개념일텐데 여태까지 아예 몰랐다는 것 자체가 스스로에게 아쉬웠던 점이었습니다. 그래도 위에 배운 점을 작성하면서 어느정도 개념 정리가 되어서 처음 배울 때보다는 이해도가 높아진 것 같다는 생각이 듭니다.


:thought_balloon:Longed for

앞으로 바라는 점은 저를 포함한 모든 수강생들이 포기하지 않고 끝까지 진행했으면 좋겠다는 것입니다.
이번 주 CI/CD를 구성하고 AWS를 사용하는 내용 자체의 난이도가 높다보니, 따라가기 힘들다고 생각하는 사람들도 있을 것 같습니다. 저도 처음에는 그랬고, 사실 지금도 이해했다고 말하기는 어렵지만 강의 내용을 꾸준히 따라가다보니 신기하게도 무언가 만들어지고 있었습니다. 다른 분들도 열심히 따라가다보면 무언가 완성되어 뿌듯함을 느낄 수 있을겁니다!!
그리고 제 스스로 바라는 점은 강의만 열심히 듣는 것이 아니라 강의 외적으로, 앞으로 공부하게 될 부분에 대해서도 미리 공부하는 사람이 되었으면 합니다. 후에 배우게 될 LLM을 대비해서 RNN, Attention, Transformer 공부를 조금씩이라도 진행할 수 있었으면 좋겠습니다. 다음 주의 제가 해낼 수 있을 것이라고 믿습니다!
이번 주도 다들 고생많으셨고 스스로 고생했다고 칭찬해줄 수 있는 여러분이 되었으면 좋겠습니다.
조금만 더 힘내봅시다!:fire:

This post is licensed under CC BY 4.0 by the author.