Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Banksalad recipe - Python flavor

Banksalad recipe - Python flavor

뱅크샐러드의 정기 컨퍼런스, 3차 콘샐러드에서 발표한 백엔드팀의 파이썬 이야기입니다. 백엔드팀이 왜 파이썬을 사용하고, 어떤 방식으로 활용하고 있는지 얘기하며, 같이 잘 일하기 위해 어떤 노력을 하고 있는지 소개합니다.

Winter Jung

March 16, 2019
Tweet

More Decks by Winter Jung

Other Decks in Programming

Transcript

  1. Index 환경 01 패턴 02 협업 03 어떤 환경에서 파이썬을

    사용하게 되었나 어떤 방식으로 사용하고 있나
  2. Index 환경 01 패턴 02 협업 03 어떤 환경에서 파이썬을

    사용하게 되었나 어떤 방식으로 사용하고 있나 어떻게 함께 잘 사용하는가
  3. 01 환경 ⚒ 빠른 개선과 배포 린하게 움직여 제품에 반영하고

    사용자의 피드백을 통한 개선의 반복 → 빠른 실행과 저렴한 학습!
  4. 01 환경 이벤트 루프 비동기 방식 어떤 방식이든 비동기면 원하는

    성능 달성 가능 가장 일반적인 익숙한 패턴 언어 레벨에서 나이스한 문법 제공 특정 파이썬 라이브러리 종속으로 인한 장벽 방지
  5. 01 환경 Python 3.5 New syntax async/await a @ b

    *, ** unpacking 동작 확장 (e.g. {'x': 1, **{'y': 2}}) New modules typing
  6. 01 환경 Python 3.6 New syntax F 문자열 포매팅 f'Answer

    is {value}' 변수 타입 힌팅 async 제네레이터
  7. 01 환경 Python 3.7 New modules dataclasses Enhancement ࡈۄ૓ typing

    ݽٕ ഛ੢ػ asyncio ݽٕ о੢ ࡅܲ CPython ߡ੹ ✨
  8. 다른 서비스나 DB에서 값을 꺼내오는 로직
 data의 repository 우리의 도메인을

    표현하는 자료 구조
 entity 유저와 거래내역을 사용하는 비즈니스 로직
 service 엔드포인트 라우팅
 route / presentation / http 02 패턴 - 애플리케이션 클린아키텍쳐
  9. entity + dataclass = 02 패턴 - 애플리케이션 비즈니스 로직엔

    entity만 타입 힌트와 함께
 풍부하게 표현 가능한 dataclass 클린아키텍쳐
  10. 02 패턴 - 테스트 pytest unittest + nose < pytest

    간결하고 깔끔한 테스트 코드 읽기 쉬운 에러 리포트 fixture 플러그인 pytest
  11. 02 패턴 - 테스트 pytest unittest + nose < pytest

    간결하고 깔끔한 테스트 코드 읽기 쉬운 에러 리포트 fixture 플러그인 pytest 모든 unittest 코드는 pytest로 테스트 가능
  12. 02 패턴 - 테스트 간결하고 깔끔한 테스트 코드 The cleaning

    hand of pytest pytest 일일이 기억해 사용해야 하는 assertXXX 패밀리
  13. 02 패턴 - 테스트 간결하고 깔끔한 테스트 코드 The cleaning

    hand of pytest setUp, tearDown 를 사용하면 더 차이나는 코드 pytest 일일이 기억해 사용해야 하는 assertXXX 패밀리 네이티브 문법을 활용해 가독성 확보
  14. 02 패턴 - 테스트 pytest fixture와 플러그인 Pytest۽ Flask੄ DB

    పझ౟ ജ҃ ҳ୷ೞӝ Python pytest fixture Switching from nose to py.test at Mozilla
  15. 02 패턴 - 테스트 DB పझ౟ pytest Mocking한 repository service에

    mocked repository를 전달해 내부 로직에 사용
  16. 02 패턴 - 테스트 외부 API 테스팅 실제 로직은 mocking을

    고려하지 않고 평소같이 작성 pytest ਗېח పझ౟ ௏٘ী ੓חѱ ইפۄ ࢲ࠺झ ௏٘ী ઓ੤ೞח ࠗ࠙
  17. 02 패턴 - 테스트 외부 API 테스팅 mocking에는 한계가 존재


    다만 외부 API의 응답을 보장하는건 여기서 다룰 책임은 아님 pytest
  18. 02 패턴 - 테스트 Git hook Git hook을 통한 사전

    테스트 실수 방지 오늘 할 일을 내일로 미루지 말자 빠른 피드백을 통한 지속적인 코드 품질 관리 bin/pre-push
  19. ISSUE_TEMPLATE.md
 맥락 파악 + 레거시화 + 의사소통 비용 감소 PULL_REQUEST_TEMPLATE.md


    코드 리뷰 효율 향상 + 체크리스트를 통한 실수 방지 03 협업 GitHub Issue / PR మ೒݁
  20. Remind 환경 01 패턴 02 협업 03 빠른실행과 저렴한학습 MSA와

    파이썬 sanic 클린아키텍쳐 docker pytest lint
  21. Remind 환경 01 패턴 02 협업 03 빠른실행과 저렴한학습 MSA와

    파이썬 sanic 클린아키텍쳐 docker pytest lint 컨벤션 템플릿
 GitHub 코드리뷰