Weitere ähnliche Inhalte
Ähnlich wie WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰 (20)
WTM 2018 2개월차 신입 백엔드 개발자의 따끈따끈 개발 썰
- 10. 그래서 이 자리를 빌어
신입 백엔드 개발자는 이런 일을 하더라(? 배우더라?)
하는 썰을 풀어보려고해요
고작 2개월동안 겪은 일일뿐..
가벼운 썰이라 생각하고 들어주세요! ☺
- 12. 이런 것들을 짧고 굵게 경험해봤습니다.
- Django 와 vue.js 로 온갖 게시판 만들기
- 아름다운 환경(git+코드리뷰+CI)에서 협업하기
- TDD
- 배운 것들 파이썬 연말세미나에서 발표하기
- 16. 다음 3가지 미션을 수행하라
Docker 튜토리얼을 완성하라
Docker-machine으로 인스턴스를 생성하라
웹을 만들어내는 웹을 만들어내라
- 19. docker 이미지를 pull하고
Container를 run하고..
이미지..컨테이너..스왐스택서비스..혼란하다 혼란해
docker run hello-world
docker build –t friendlyhello
docker image ls
docker run friendlyhello
docker container ls
docker container stop freindlyhello
…
- 20. 나는 식은 죽도 못 먹는 닝겐
리눅스 처음 사용 + 도커 이해 못함
따라 쳤는데..왜안되..
- 23. 부두 노동자들이 선박을 타고오는
잡다한 물건들을 상하차하고 보관하는데 어려움을 겪었는데
포대기들? 저거 가루면?
터지면?
- 25. 서버 운영자나 개발자 또한 각자의
개발환경, 운영환경이 다른 복잡한 문제!
개발은
맥에서
서버 운영은
리눅스에서
- 31. 내 맛대로 담은 컨테이너를 남들과 주고 받고
필요할 때는 복붙도 무한대로 할 수 있다!
- 32. FLASK앱에 필요한 파일들을 생성하고
else
elseapp.py
requirements
.txt
Dockerfile
도커에 대한 감을 잡고 튜토리얼 따라하기!
- 35. 그 뒤로 docker swarm service stack도
맛보기로 따라해본 후 튜토리얼 종료
stack
swarm
service
스왐스택서비스…한 번에 이해하기 넘나 어려운 것
- 38. 도커머신 설치하고 도커머신 생성
일단 도큐먼트 따라해보기
Virtualbox?? 가상머신??
docker-machine create --driver virtualbox myvm1
- 52. 그럼 될 때까지 무한 생성한다..!
eb init … eb deploy
eb init … eb deploy
eb init … eb deploy
eb init … eb deploy
…
나는야 포기를 모르는 집념의 한국인이지 ㅋ
- 54. 근데 Region개념도 알지 못했던 저는
대시보드에 인스턴스가 없으니 막무가내로 인스턴스를 생성
여긴 싱가포르라구요 싱가포르..
- 55. 문제를 알고 인스턴스 만든 리전 찾아들어가니
인스턴스가 하나..둘.. 몇 개가 돌아가는 중인겨..ㅠㅠ
- 60. 이번에는 단디 region을 설정하고
$ docker-machine create –driver amazonec2
--amazonec2-region ap-northeast-2
리전은 서울!
- 62. 미션 1에서 만든 flask 파일들을 똑같이 만들고
컨테이너에 담아
else
elseapp.py
requirements
.txt
Dockerfile
Build Flask Imange
- 66. “그럼 flask 이미지만 가지고 있으면 얼마든 docker-machine 생성해서
막막 여러 개 배포할 수 있겠네?” 이런 상상을 해보며..
그리고 그 일이 실제로 벌어지게되는데..
- 71. 웬 url 주소를 보여줌
Ec2-13-125-243-206.ap-northeast-2.compute.amazonaws.com
- 76. 사용자가 입력한 텍스트를 함께 버무려 컨테이너에 넣기
else
elseapp.py
requirements
.txt
Dockerfile
Build Flask Imange
“Hello
Women
techmakers!”
- 83. 알고보니 flask는 열심히 인스턴스 만드는 명령 수행하느라
응답해줄 시간이 없음
이미지도 만들고 도커머신도 만들라며!
Flask ;;
- 84. 그렇다면 flask는 오래 걸리는 일 시키지 말고
사용자에게 바로 응답 메시지를 보내도록 하자
Flask
“인스턴스
생성중이에요!"
Response
- 85. 오래걸리는 일은 딴 애한테!
비동기로 일을 처리해주는 celery
오래걸리는 일은 딴 애한테!
@task? Ok!
- 86. Flask한테 시키던 도커 관련 일을 따로 빼서
@task를 붙여 celery가 할 일이라고 표시해 둠
@task
def celery_task:
1. Docker image 만들기
2. Docker machine도 만들기
3. 이미지 machine에서 돌리기
- 88. 그래서 할 일 목록을 담은 똑똑한 브로커가
Task를 celery 워커들에게 분배해줘야 한대요
Task
Task
Task
Task
Task
- 89. 이 브로커로 Redis를 사용!
Redis
사용자 텍스트 가져오기
텍스트 넣고 도커 이미지 만들기
도커 머신도 만들기
도커 머신에 원격으로 접속하기
머신에서 만든 이미지 실행시키기
- 90. 전체적으로 보면 flask가 task를 요청하면
Redis가 celery워커들에게 일을 분배하는 구조!
Flask
요청
분배
Redis
Task
Task
Task
Task
Task
- 94. 그렇다면.. 첫 페이지에 인스턴스 정보를
표로 뿌려주자!
Name URL Container
aws01 Ec2-13-125-243-206.ap-northeast-
2.compute.amazonaws.com
d272050b7551
aws02 Ec2-13-135-273-202.ap-northeast-
2.compute.amazonaws.com
d382050c1959
- 97. 이렇게 아름다운 구조가 되었어요
원하는 정보들 찾아와서 뿌려주고!
Flask
Task
Task
Task
Task
Task
Redis celery
docker machine
- 98. 이건 혹시, 미션2를 자동화한 것?!
내가 직접 손으로 쳐서
Docker machine만들고 컨테이너 돌리던 것을
=> 명령만 하면 flask가 만들도록?!
- 101. 제가 백엔드를 맡게된 노루는
머신러닝 모델을 api로 만들어주는 플랫폼
머신 러닝 모델
api
knowru
- 102. 데이터 과학자들이 python이나 r등으로 머신러닝 모델을 만들었는데
실제 서비스에서 쓰려니 웹 서버에서 쓰는 언어로 번역해야하는 문제
머신 러닝 모델
(Python, R …)
웹 서버
(PHP, Java, …)
번역
- 103. 그래서 이 머신러닝 모델을 분리해 독자적인 api로 만들어주는
플랫폼이 필요했대요
머신 러닝 모델
api
웹 서버
(PHP, Java, …)
- 104. 데이터 과학자들이 만든 머신러닝 모델과
필요한 운영환경 파일을 노루에 업로드하면
else
else
knowledge
.py
Requirements
.txt
등등
- 105. 노루가 이 파일들을 컨테이너에 담아서
else
else
knowledge
.py
Requirements
.txt
등등
어디서 많이 본 행위?
- 107. 그럼 이렇게 노루가 만든 머신러닝 api와
웹 서버가 데이터를 주거니 받거니
Docker machine
웹 서버
(PHP, Java, …)
- 108. knowru
결국 노루가 하는 일을 간단하게 만들어 본 것!
아름다운 구조가 되었어요 라고 했던게..
Task
Task
Task
Task
Task
Redis celery
docker machine
- 109. 어떤 일을 하게됐는지 이제서야 파악하고
실제 프로젝트에 투입되게 되는데…
준비운동 끝냈으면 일해야죵?
- 112. 화려한 대시보드를 위해
머신러닝 돌린 log들 중 의미있는 데이터 뽑아오기
예) 하루동안 평균 응답 시간, 개수 등
시간이나 날짜별로 뽑아오면 그래프 그릴 수 있어요!
- 114. Query로 직접 데이터 가져오는 코드덩어리들 발견
SELECT *** FROM *** JOIN *** ORDER BY ***
…
…
With connections[‘replica’].cursor()
- 115. 왜 굳이 query를 써서 가져오는 거지?
Replica?는 또 뭐야?
왜 이러는겨.. ORM쓰면 안되는 겨..?
이쯤에서 느껴지는 불길한 예감
- 116. 보통 하루동안 쌓이는 log의 개수가 몇 만개에서 몇 십만개
여기서 의미있는 데이터를 조합해서 가져온다?
X 100000
X 필요한 데이터 조합
- 117. 그런 고민해본적 없는
운영 무경험자 1인
몇 천, 몇 만 무한대로 늘어갈 때를 상상해보자-!
몇 십 몇 백개 object 만들어서 테스트 돌리고 끝-! 아니라..
- 118. 그런 상황을 대비해서
최대한 안전하고 효율적인 서버 관리를 위해
1. DB한테 최대한 일을 많이 시키도록 하여라
2. Query는 최대한 적게 날리면 좋으니라
- 121. 앞에 본 코드들 따라하며 만들어보기
쿼리 그까이꺼
쿼리한번도 써 본 적 없지만
- 123. 가져온 테이블에서 또 select하고 또 select할 수 있는
인셉션같은 쿼리의 세계
SELECT ***
FROM (
SELECT ***
FROM (
SELECT ***
FROM …
)
)
- 124. 많은 계산을 하는 DB가 느려지지 않도록
읽는 작업 전용으로 하는 Replica를 사용
+
됐어.. 할 수 있는건 다 했ㅇ ㅓ…
- 127. 정해둔 주기마다 task를 수행할 수 있도록하는
Celery beat을 사용해보자!
Task
Task
Task
Task
Task
- 129. 이제 대시보드에 정보를 필요할 때마다
저장된 데이터로 가져올 수 있어요!
그래프 그리게
당장 내놔
니가 원하는 데이터쯤
이미 저장되어 있지!
- 134. 또한 어떤 데이터를 뽑아오냐도 중요하지만
서버가 무리하지 않는 선에서
최대한 빠르게 데이터를 가져오도록 만드는 일
- 135. 마치 손이 열개인 데이터 서빙맨들을 만들어내는 느낌
데이터 서빙은 만렙이지유
- 136. 지금까지 신입 백엔드 개발자가
2개월동안 스타트업에서 일하며 경험한 썰
뭔지 모르겠지만 일단 해본 썰..
- 138. 휘게휘게 휘게는 무슨말?
행복지수 부동의 1위 덴마크의 단어
휘게란 행복하고 안전하고 즐거운 상태, 긴장을 푼 마음상태에서
소소한 즐거움을 누리는 것, 일상적이고 익숙한 것에서 즐거움을 찾는 것
- 143. 개발자가 되도록 도와준 도구들과 사람들
시간을되롤려주는 git, 실수방지 테스트도구들, 사수님들, 개발자 동료들이 없었다면
난 정말 개발자가 될 수 없었을거야
- 144. 8시 출근 – 5시 퇴근
휘게하게 코딩하기 위한 워크앤라이프 밸런스
- 150. 우연히 공대로 편입하게 되어 연구실을 다니며
이런 말을 제 입으로 했더랬죠
“와 저런걸 가시나가 어째하노. 저 마이 폐인처럼 컴퓨터앞에
앉아있는 머시마들을 어째 이기노 내가”
- 153. 가장 바깥 원 = 가장 하고싶지만 실행하기 가장 두려운 일
- 154. 저는 저 ‘퇴사’부분이 ‘발표’였고
또 한때는 ‘코딩’ 이었지만
나야말로 4차혁명 시대의 프포자였지 훗
- 156. 이 영역들이 전부 휘게한 영역이 되어가더라구요
휘게하게
코딩하기
휘게하게
발표하기
나의
휘게 영역들