플랫폼/데이터 엔지니어링 과제 풀이 (도커가 뭐길래)
저번편 3줄요약
1. 마! OOP다!
2. 마! 이벤트 찍어낸다!
3. 마! 후행 이벤트도 찍어낸다!
도커가 뭐길래
일단 본인은 도커가 뭔지는 모름. 근데 써봤습니다. 프롤로그에서 SQLD 준비할 때 리눅스에서 오라클 썼다고 했는데, 리눅스에서 오라클 돌리려면 도커를 설치해야 합니다. 그리고 도커는 컨테이너를 실행하고 뭘 해야 하기 때문에 컨테이너 키고 오라클 키고 으아악 오타 멈춰 가라 지에딧! 하면서 쿼리를 짰어요…
도커는 컨테이너를 활용하여 소프트웨어를 배포 및 구동하기 위한 오픈 소스 플랫폼입니다. 내가 맞게 이해한건지는 모르겠는데, 오라클을 도커에서 돌릴때 도커 컨테이너를 먼저 켰던것도 오라클이 들어있는 컨테이너를 열어서 적재된 오라클(과 관련된 모든 것들)을 다 꺼내는 절차를 거쳐야 하는거고, 여기에 서술할 과정들이 컨테이너에 내가 코딩한거랑 뭐뭐 필요한지를 차곡차곡 적재하는 뭐 그런건가봄.
이거 한다고 어제 새벽까지 밤샜음… 그리고 여기는 아예 해본적이 없어서 채찍피티의 도움을 받아서 진행했음.
극한적재

저 깃이그노어는 딱히 도커에서만 쓰는 건 아니고, 이런이런 파일들은 바뀌어도 무시해~ 라고 적어두는거라고 이해하시면 되겠습니다. 여기서 봐야 할 건 DockerFile이랑 requirements.tst랑 docker-compose.yml 세개임.
저 도커파일을 만들라고 했을 때 처음 든 생각이 아니 뭔 파일? 파일이면 확장자가 있어야되는데 확장자는 없고 걍 만들라는데 뭐 어쩌라는겨? 였음... 근데 이름을 강 DockerFile로 하면 VScode에서는 아이콘이 고래(도커 아이콘이 고래 위에 컨테이너 있는거임)로 바뀝니다. docker-compose 저친구는 뭐 하는 앤지 모르겠는데 쟤 들어가면 좀 더 간단하다고 하더라고... 채찍피티 피셜이라 한번 찾아보기는 해야겠지만.
저 리콰이얼먼츠는 우리 이거 돌릴때 이거 필요해~ 하는 것들을 다 적어두는거다. 저기에는 matplotlib만 있지만 내가 씨본 썼으면 Seaborn, 플롯틀리 썼으면 Plotly, 오리클 썼으면 oracledb(맞나?)… 뭐 이런 것들 쓰면 된다. 아무튼 저렇게 구성하고 컨테이너를 만들려고 했는데 안돼! 이 컴퓨터에 도커가 안깔렸어! (리눅스에는 오라클때문에 도커 깔려있음)
그래서 설치를 다 하고 만들었는데 또 안돼! wml인가 뭔가 업데이트를 하래! 그걸 또 따로 깔고 재부팅을 또 해야돼! 그래서 도커 깔고 한번 쟤 깔고 한번 재부팅을 했죠... 그러고 나서 이제 컨테이너에 적재를 다 끝내고 깃헙에 db 지우고 올린 다음(어차피 돌리면 생성됨) 리눅스에서 실행을 했는데 이게 한번에 됐으면 제가 세시까지 밤을 안 샜습니다.
극한실행
아니 무사히 패킹하고 올렸으면 잘 된 거 아니예요? 아니죠. 이걸 받아서 실행했을 때 이상이 없는지를 확인해야 합니다. 컨테이너에 화물을 개판으로 실으면 그게 잘 적재되겠음? 개판으로 적재됐는데 그게 무사히 갈까요? 받아봤더니 포장 개박살나있고 화물 개작살나있고 썩어있거나 할 수도 있잖아요.
여러분들 쿠팡에서 뭐 시켰는데 박스 찌그려져서 온 적 있죠? 포장 개박살나서 온 적은? 난 있어... 근데 박스 찌그러진거는 내용물에 문제 없으면 그 허브 컨테이너에 낑겨서 그렇게 되는겁니다. 내 경험담임... 사람이 옮기는 속도가 화물 쌓이는 속도를 못 따라잡아요. 특히 내 라인에 무거운거 걸리면... 아무튼 그런 사태가 일어나지 않을런지 리눅스로 미리 테스트를 해보다가 문제가 터진겁니다... 물론 버그가 터진다거나 하면 디버깅도 해야겠죠. 그 디버깅하고 아 이제 끗 제출하자까지 하느라 새벽 3시까지 밤샌거임...
일단 우분투 노트북을 켤 일이 잘 없습니다... 원래는 백준 풀 때나 분석 돌릴때(혹은 공부할때) 간간이 켰었는데 애가 할배노트북이라 공부하러 밖에 나가질 못해요... 켜놓고 숨쉬면 배터리 2%씩 빠짐. 완충해놓고 충전기 안 꼽고 3시간 글쓰면 2~30%까지 방전됩니다. 그거는 충전기를 들고 다니면 해결은 되는데 스카 가는것도 돈이잖아... 집에서 하면 그것도 해결은 되는데, 사양 문제때문에 분석 돌리면 뻗어요 애가... 그래서 캐글 데이터분석 할 거 남아있는것도 아예 올스톱됐음...
그리고 리눅스는요… 윈도우처럼 친절하지 않아… 업데이트 있으면 당신이 터미널 가서 있나 봐야됨… 근데 쟤를 거진 한달인가 두달만에 켰거든요? 밀린 업데이트가 쌓였어요. 그거 까는데도 시간이 들어요… 아니 그럼 그거 설치하면 되는거 아니예요? 그게 거기서 끝났으면 내가 새벽 3시까지 밤을 안 샜어요…
우분투에 도커를 작년에 깔았습니다. 그래서 버전이 낮아요. docker compose v2가 있어야되는데 우분투에 v1이 있었어. 아니 그럼 딸깍 업데이트 하면 안돼요? 리눅스에 그런 친절함 바라시면 안돼요. 애초에 리눅스는 뭐 깔때도 터미널에서 sudo 안 붙이면 권한 없다고 빠꾸먹이는 OS예요. 파이참도 윈도우 맥에서는 딸깍하면 열릴때 압축 푼 폴더 경로 찾아가서 직접 쉘 스크립트 열어야 되는 OS예요...
그럼 업데이트를 안 하면요? 컨테이너가 신식 도어록인데 적재된거 풀어야되는 애가 구식 열쇠 갖고있으면 열려요? 도어락을 망치로 부실거야? 그래서 업데이트를 해야되는데 또 문제가 뭐냐... 리눅스에서 apt update && upgrade 돌릴 동안 dpkg가 잠깁니다. 그래서 업데이트 다 끝나고 잠김 풀릴때까지 또 대기해야돼요. 그 업데이트가 다 끝나고 도커 업데이트를 마무리했음... 그래서 v2로 바꿨습니다.
그러고 한 3~40분동안 디버깅했음... 업데이트는 됐으니까 적재하는데 문제는 없다, 그런데도 실행이 안되는건 화물... 그러니까 적재된 코드에 문제가 있다 해서 디버깅하고 올리고 실행하고 어씨 에러났다 디버깅하고 올리고 실행하고 뭐야 왜안돼 디버깅하고 올리고 실행하고 오씨 할렐루야 됐다 근데 그래프 글꼴을 왜 못찾지(그거 빼고 다 잘 돌아갔음) 에이씨 날려 걍 하고 끝난겁니다... 이 작업때문에 세시까지 밤샌거예요...
글꼴 아...
본인이 제일 싫어하는게 기본글꼴하고 고딕입니다. 손글씨나 도트체 이런거 좋아하는데… (마비옛체 좋아함) 그렇다고 포폴용 그래프에 마비옛체나 손글씨체를 쓸 수는 없으니까 그나마 타협 보는 폰트가 나눔스퀘어랑 프리텐다드입니다. 그래서 본인이 데이터 분석 한 글 보시면 글씨가 다 손글씨 마비옛체 픽셀체 이런데 BI쪽으로 한건 다 나눔스퀘어죠? 포폴로 쓸라고 일부러 나눔스퀘어로 한 겁니다.
그럼 뭐가 문제예요? 리눅스에 글꼴이 안 깔렸음? 깔려있습니다. 근데 인식을 못해요. 저장된 이름이 다른건지 경로때문인건지 모르겠는데 디버깅이 필요하기도 하고, 리눅스에서 글꼴 깔 때는 윈도우처럼 딸깍... 이거 개별 설치(ttf 하나)는 되는데 보통은 터미널에서 특정 경로에 폴더 만들고 거기다가 ttf파일을 복사합니다. 안그랬다가 피본 적 있음...
그래서 글꼴 설정을 왜 뺐냐고요? 나눔스퀘어가 안 깔려있는 다른 컴퓨터에서도 이런 오류가 나면 어떡함? 막말로 사측 컴퓨터로 적재된 코드 내리면서 돌리다가 그 컴퓨터에 나눔스퀘어가 없어서 뭐여 이 폰트 몰라요 하고 중간에 오류메시지만 줄줄이 소시지마냥 한 열댓줄 떠봐요. 어유… 세상천지 그런 대참사도 없어…
'Coding > Python' 카테고리의 다른 글
| Faker (0) | 2026.06.12 |
|---|---|
| 플랫폼/데이터 엔지니어링 과제 풀이 (구현) (0) | 2026.05.10 |
| 플랫폼/데이터 엔지니어링 과제 풀이 (Prologue-문제 그리고 구상) (0) | 2026.05.09 |
| Polars 데이터프레임도 시각화가 되나요? (0) | 2026.04.10 |
| Polars를 써보자 (0) | 2026.04.09 |