[데이터 엔지니어링 데브코스] TIL 44일차 - Docker & K8S (3)

박단이·2023년 12월 21일
0

데브코스 TIL

목록 보기
44/56

오늘 배운 것🤓

Github Actions

  • CI/CD를 Github 위에서 구현하기 위한 서비스
    • 코드 테스트, 빌드, 배포 자동화 기능 제공
  • Github Actions로 만든 프로세스들을 workflow라고 부른다.

Actions Workflow

  • trigger event가 발생하면 시작되는 일련의 동작들의 집합
  • triggeg event 예시
    • 코드 commit
      main과 같은 특정 브랜치를 대상으로 제한할 수도 있다.
    • Pull Request 생성
    • 다른 workflow의 성공적인 실행
      worflow chaining
  • 구성
    • Events : workflow를 실행시키기 위한 조건
    • Jobs : 실행되는 작업
    • Actions
    • Runner : 작업이 돌아가는 서버
  • workflow는 yaml/yml 파일로 저장된다.
  • Job들로 나눠지며 각 Job은 일련의 step을 수행한다.
  • 각 step은 하나 혹은 그 이상의 명령어를 실행한다.
  • 하나의 repo에 대해 다수의 worflow들이 존재할 수 있다.

생성 방법

  1. Github repo에 Actions 메뉴클릭
  2. 방식에 따라 Python application 혹은 Docker Image 선택
  3. 자동으로 생성되는 yaml 파일을 수정 및 commit

Python 코드 관리 및 테스트

flake8

  • python에서 가장 많이 사용되는 코드 관리 라이브러리
  • python 코드에서 에러나 코딩 스타일 등의 이슈를 체크해주는 기능을 갖고 있다.
  • 이런 툴을 Linting Tool이라고 부른다.
# 먼저 설치 필요
$ pip install flake8

# 원하는 파일을 점검하고 싶을 때
$ flake8 소스코드.py

# 해당 폴더의 모든 python 파일을 점검하고 싶을 때
$ flake8 .

# 많은 옵션은 뒤에 붙힐 수 있다.
$ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

unittest

  • python 코드를 테스트할 수 있는 내장 라이브러리
  • 요즘은 pytest를 설치하여 사용하는 것이 추세라고는 함.
  • 테스트 코드를 작성할 때는 테스트를 진행하는 class에 unittest.TestCase를 계승하고 test_로 시작하는 함수들을 만든다.
# test.py
import unittest

class TmpTest(unittest.TestCase):
    def test_checkTrue(self):
        ...
        self.assertTrue(variable1)
        ...
    def test_checkFalse(self):
        ...
        
if __name__ == "__main__":
    unittest.main()
$ python3 -m unittest test.py  # 메인 method가 정해지지 않았을 때
$ python3 test.py    # 메인 method가 정해졌을 때

Docker 명령어 정리

Container의 일생과 관련된 명령어 모음

Docker 명령어

$ docker ps		# 현재 실행중인 모든 container
$ docker ps -a	# 실행중 + 중지인 모든 container

logs

$ docker logs -f 컨테이너이름		# 실시간으로 log 표출
$ docker logs 컨테이너이름		# 과거의 log 표출
$ docker logs --tail 100 컨테이너이름		# log 마지막 100줄만 표출

exec

# 이미 실행중인 컨테이너에 명령어를 보내는 것
$ docker exec 컨테이너이름 컨테이너명령어
$ docker exec test-container cat /etc/hosts

detach & attach

$ docker run -d 이미지이름	# 백그라운드로 실행
$ docker attach 이미지이름	# 다시 포워드그라운드로 복귀

느낀 점😊

Github Actions 너무 써보고 싶었는데 이번 기회에 써볼 수 있게 되어서 좋다. yaml 파일에 어떤 내용을 더 적을 수 있고 worflow chaining 하는 방법을 더 찾아봐야겠다.
linting tool, test tool 모두 생각만해보고 적용은 안했었는데 이번 교육에서도 중요성을 강조하셨던 만큼 지금부터라도 조금씩 익숙해지는 연습이 필요할 것 같다!

profile
데이터 엔지니어를 꿈꾸는 주니어 입니다!

0개의 댓글