개발공부 & 부트캠프/[부트캠프] 회고

[데이터 엔지니어링 부트캠프]10월 3주차 회고

포리셔 2023. 10. 23. 00:16

좋았던 점

  • 새로 오신 강사님이 도커, 쿠버네티스 기능과 관련하여 프로젝트의 제작과 배포에 대하여 알려주셨습니다. 어떻게 보면 개발자에게 중요한 또다른 일면이 바로 이 배포 부분인데, 현업에 오래 계셨고 비교적 최근까지도 회사에서 근무하셨기 때문에 그 점에 대하여 아주 자세하고 실무에 가깝게 설명해주신 부분이 좋았습니다.
    • 이와 관련해 가장 좋았던 점은 현업에서 리포지터리를 함께 사용하는 법과 주의해야 할 점 등에 대해서 실습을 통해 차근차근 알려주신 점이 좋았습니다.
  • 가장 좋았던 점이라면 강사님과 수강생들끼리 뿐만 아니라 같은 수강생들끼리도 서로 도움을 주고받으며 해결책을 제시하고 도와줄 수 있는 환경이 조성되었다는 것입니다. 실무에서 어떻게 트러블에 대처하고 도움을 청하는지를 체험하기 위해 반 전체가 함께 쓰는 공용 리포지터리를 생성해 이슈(issue) 탭에 매뉴얼과 대처 방안을 적어놓게 했는데, 이 과정에서 저희가 알아낸 사실도 강사님께 도움을 줄 수 있다는 것을 체험했습니다. 개발 업계에서 깃허브를 통해 어떻게 서로 도움을 주고받는지 맛 볼수 있어서 좋았던 것 같습니다.

아쉬웠던 점

  • 저번 강사님의 지나치게 루즈한 진행 때문에 이번 강의가 조금은 타이트하다고 느껴졌습니다. 그리고 실무에서도 이렇게 일이 진행된다는 것을 알고 나니 왠지 모르게 연구실 시절에 PTSD가 도지면서... 압박감이 느껴졌지만, 반 수강생 공용 리포지터리에서 이슈(issue) 탭에 질문을 올리면 다른 수강생들이나 강사님이 직접 코멘트를 통해 이런저런 방법들을 하나씩 알려주셔서 지금까지는 큰 무리 없이 진행 중입니다.

배운 점

인프라 구성 관리 기초 지식

인프라 구성 관리는 다음의 네 단계로 구성됩니다. 이 네 단계가 사이클을 구성하면서 돌고 돕니다.

  1. 개발 - 사람의 필요에 의해
  2. 배포 - 필요한 사람들의 사용을 위해
  3. 운영 - 꾸준한 사용성을 위해
  4. 성능 - 많은 양의 처리를 위해

사실 개발의 꽃은 두 번째 단계인 배포입니다. 배포하지 않는 개발은 의미가 없습니다. 또한 소프트웨어 개발에 재미를 붙이려면 이 개발을 꼭 해보셔야 합니다. 가까운 지인 한 사람에게라도 이 프로그램 써봐라 제안해봐야 합니다. 그래야 내가 왜 이 툴을 쓰는지를 확실하게 정의할 수 있습니다.
또한 일반적으로 사원을 뽑을 때 개발과 배포는 다 해봤겠거니 가정을 하기 때문에 실제로는 면접에서 운영 경험에 초점을 맞추고 그 스킬을 물어봅니다. 또한 그 운영 경험을 통해 어떻게 대응을 해야 할 지 성능 개량을 하게 됩니다.

개발 환경 세팅

  • 네이버에서 배포한 d2 coding이라는 폰트를 설치합니다. 깃허브 리포지터리로 들어가서 최신 버전의 릴리스에서 압축 파일을 다운받은 뒤, 폴더 안에 있는 설치 파일을 실행합니다. 여기서 설치 버튼을 클릭하면 폰트가 자동으로 설치됩니다.
    d2coding 설치파일
  • sudo apt-get install zsh로 zsh를 설치한 뒤, https://ohmyz.sh/#install로 들어가서 ohmyzsh를 설치합니다. 이후 vi ~/.zshrc로 들어간 뒤, ZSH_THEME 행을 ZSH_THEME="agnoster"로 변경하고 저장하고 나옵니다. 정상적으로 저장되었는지는 grep THEME ~/.zshrc | grep -v "#"로 알 수 있습니다.
  • Microsoft Store에서 윈도우 터미널을 설치하고 설정을 바꿔줍니다. 기본 터미널을 기존에 설치한 Ubuntu 22.04로 변경한 뒤, 모양 탭에서 글꼴을 아까 설치한 D2 Coding으로 변경 후 저장을 클릭합니다. 원한다면 글꼴 크기도 키우거나 줄일 수 있습니다. 저는 눈 건강을 위해 폰트를 조금 키워줬습니다. 정작 집에 있는 데스크탑에서는 기본 크기 그대로 해도 노트북보다 폰트가 컸다는 것이 함정
    설정창
  • pyenv를 설치합니다. curl https://pyenv.run | bash 커맨드 또는 git clone https://github.com/pyenv/pyenv.git ~/.pyenv 커맨드로 설치합니다. 참고로 현재 우리는 bash가 아니라 zsh을 이용하는 환경을 세팅했기 때문에 설정을 ~/.zshrc 파일에서 바꿨습니다. vi로 해당 파일을 연 뒤, 맨 아래에 다음과 같은 구문을 추가하세요.
    # pyenv
    export PYENV_ROOT="$HOME/.pyenv"
    command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    추가 후에 source ~/.zshrc를 실행해 변경사항을 반영합니다.
  • pyenv install -l을 입력하면 설치할 수 있는 파이썬 버전이 전부 나옵니다. 아직은 3.8.18이 가장 널리 사용되니 이걸 사용하도록 합니다. pyenv install 3.8.18을 입력합니다. 혹시 제대로 설치되지 않는다면 이 링크로 가서 방법을 참고한 후 설치하도록 합시다. 제대로 설치되었다면 pyenv versions로 확인할 수 있습니다. 보면 아직 system에 별표(*)가 표시되어 있죠? 이걸 우리가 설치한 버전으로 바꿔줄 겁니다. pyenv global {원하는 버전}을 입력합니다. 다시 pyenv versions를 입력하면 버전이 옮겨간 것을 확인할 수 있습니다.
    pyenv version
  • PDM 설치: 파이썬 팩키징 및 연관 모듈관리를 위해 pdm이라는 툴을 설치해줄 겁니다. pdm의 설치는 이 링크에서 확인할 수 있습니다. 공식 홈페이지에서는 curl -sSL https://pdm.fming.dev/install-pdm.py | python3 -를 사용하라고 하는데, 행여 이 과정에서 FileExistError가 발생하면 curl -sSL https://pdm.fming.dev/install-pdm.py | python -를 쓰면 설치됩니다(커맨드에서 숫자 3만 지우면 됩니다). 설치 후 .zshrc 파일 아래에 export PATH=/home/{우분투 계정 이름}/.local/bin:$PATH을 추가합니다. 끝난 후에 source ~/.zshrc 실행하는 것 잊지 마시고요.

배포 준비

배포는 크게 두 가지로 실습했습니다. 첫 번째는 Pypi를 이용해 나만의 파이썬 패키지를 만들어 배포하는 것이고, 두 번째는 github.io 개인 블로그 페이지를 만드는 것이었습니다. 그리고 이 두 가지 과정에서 깃허브의 풀 리퀘스트(Pull Request, 통칭 풀리퀘 또는 PR)의 기능을 십분 활용해 개별 브랜치에서 생성한 커밋 정보를 검토하고 합치는 연습을 했습니다.

Pypi 배포

  • root 디렉터리에 code 디렉터리를 만들고 그 아래에 hello-tjkpolisher라는 디렉터리를 하나 더 만들었습니다. 이 디렉터리로 옮겨간 후 pdm init을 실행합니다.
    여기서부터 우리는 환경을 세팅해나갈 겁니다. 아래 이미지를 참고해주세요. 파란색 괄호 안에 들어가 있는 값이 기본 값이고, 아무 것도 입력하지 않은 채 엔터를 누르면 자동으로 그 값이 입력됩니다. 값이 비어있는 항목은 그냥 엔터를 누르셔도 되고, 값이 있는 항목에서는 그 질문에 맞는 답을 아래 이미지를 참고해서 넣으시면 됩니다. description 칸은 해당 프로젝트에 대한 간략한 설명을 적으면 되는데, 이걸 한국인만 쓰는 것도 아니니 가급적 영어로 쓰는 것을 권장드립니다. username에는 pypi에 가입할 때 사용한 username을 만들고 이메일에는 가입할 때 사용한 이메일 주소를 넣어야 합니다. pypi 홈페이지에 로그인하면 account settings에서 확인할 수 있습니다.
    image
  • 모든 실행이 끝나면 pyproject.toml이라는 파일이 생긴 것을 볼 수 있습니다. 이 파일에 우리가 만들 파이썬 프로젝트의 초기 설정을 저장하게 됩니다.
  • pdm venv create로 가상환경을 생성합니다. source .venv/bin/activate로 만들어진 가상환경을 실행한 후 pdm install을 실행합니다. 실행이 끝나면 pdm publish를 실행하고 pypi에서 설정한 username과 password를 입력합니다. 만약 Two factor authentication (2FA)를 활성화놓았을 경우 API Token을 발급받은 후에 username에는 __token__을 입력하고 password에는 발급받은 토큰의 값을 붙여넣으면 배포가 됩니다.블로그 배포
  • 여기서는 웹 사이트 템플릿과 그 에디터를 먼저 세팅하겠습니다. 먼저 Brackets 사이트로 가서 에디터를 다운받고 설치하세요.
  • 다음으로 HTML5 UP으로 갑니다. 이 사이트에는 홈페이지에 사용할 수 있는 각종 템플릿들이 있습니다. 이 중에 원하는 템플릿을 다운받으면 다운로드 폴더에 압축파일이 생길 겁니다. 압축을 풀고 폴더의 이름을 (본인 깃허브 계정명).github.io로 바꿔보세요. 이 폴더를 우분투의 code 디렉터리에 넣습니다. 이 경로를 Brackets로 열면 템플릿을 기반으로 우리가 원하는 대로 웹페이지를 꾸밀 수 있습니다.
  • 여기서 수정한 데이터도 Pypi 배포 때와 마찬가지로 풀 리퀘스트를 기반으로 작업을 한 후 커밋 및 푸쉬를 합니다. 이 때 브랜치를 머지하면 웹페이지의 빌드가 진행되어, 웹 브라우저 주소 창에 폴더 이름 처럼 (본인 깃허브 계정명).github.io로 바꾸면 개인 웹페이지로 접속할 수 있습니다!
    (제 웹페이지는 tjkpolisher.github.io에 있습니다.)

앞으로 바라는 점

  • 파이널 프로젝트에서도 최종 목표가 배포인 만큼 이번 기회에 배포의 기본기와 실무에서 주의해야 할 점을 제대로 익히고 싶습니다.