파비의 매일매일 공부기록

Two Scoops of Django - #21장 본문

Study/Python

Two Scoops of Django - #21장

fabichoi 2021. 6. 22. 23:30

이번장은 장고의 서드 파티 패키지들에 대한 내용이다.

요즘의 개발은 서드 파티 패키지들 없이는 불가하다고 봐도 무방할 정도로 여러 가지 패키지들이 사용된다.

나도 나름 꽤 많이 쓰고 있는 듯.

 

1. 서드 파티 패키지의 예 : 꼭 장고에만 적용하지 않고 다른 파이썬 프로젝트에도 이용한 패키지들도 많다. 보통 장고에만 적용되는 패키지는 django- 라는 접두어로 시작하지만, 항상 그런 건 아니다.

 

2. 파이썬 패키지 인덱스 : PyPI는 파이썬 프로그래밍 언어를 위한 소프트웨어 저장소. pip를 사용할 때 해당 저장소에서 데이터를 가져옴. 난 이건 처음 알음.. PyPI와 pip는 관계가 없는 줄 알았는데 ㅎㅎㅎ

 

3. djangopackages.com : 장고 앱을 위한 재사용 가능 앱, 사이트, 도구 들을 모아 놓은 디렉터리. 각 패키지의 성능 비교에 매우 좋은 사이트다.

 

4. 다양한 패키지를 알아 두자 : 필요할 때마다 라이브러리는 만들기보다는 서드 파티 라이브러리를 사용하는 걸 추천한다. 각 패키지들의 코드를 공부하고 배울 수 있으며 패턴 및 기술들을 익힐 수 있고 나쁜 패키지들로부터 좋은 패키지를 선별하는 능력을 기를 수 있다.

 

5. 패키지 설치, 관리를 위한 도구들 : virtualenv와 pip는 필수. 당연. pyenv도 포함하고 싶음.

 

6. 패키지 요구 사항 : requirements/ 내에 존재

 

7. 장고 패키지 이용하기 : 기본 

 - 1단계 : 패키지 문서 읽기

 - 2단계 : 패키지와 버전 번호를 requirements에 추가. 버전 번호를 자세히 넣지 않는 경우 최신 버전을 받아오기 때문에 호환성에 문제 생길 수 있음.

 - 3단계 : virtualenv에 requirements 설치

 - 4단계 : 패키지의 설치 문서를 그대로 따라 할 것 : 설치한 패키지가 익숙지 않는 경우 문서를 건너뛰거나 무시하지 말고 숙지할 것.

 

8. 서드 파티 패키지에서 문제가 생겼을 때 : 스스로 해결해보려고 노력할 것. 빠진 단계가 있는지 확인. 온라인 검색. 만약 버그 같다면 이슈 트래커에 해당 이슈가 있는지 확인해볼 것. 스택 오버 플로어, IRC 채널 등을 활용할 것.

 

9. 자신의 장고 패키지 릴리스하기 : 유용한 장고 앱을 제작했을 경우, 다른 프로젝트에서 재사용 가능하도록 패키징 할 것.

 

10. 좋은 장고 패키지의 요건 

 - 목적 : 패키지 자체에 유용한 기능이 있어야 하며 정상 동작해야 함.

 - 범위 : 해당 태스크에만 초점을 맞출 것

 - 문서화 : 문서화에 집착할 것. 스핑크스를 이용하면 잘 정돈된 버전을 문서 작성 가능.

 - 테스트 : 반드시 테스트를 거쳐야 함. 테스트는 패키지의 신뢰도 향상 및 앞으로의 파이썬, 장고 버전에도 도움이 됨.

 - 템플릿 : 최근에는 뼈대 역할을 하는 템플릿 세트를 제공하는 방향으로 가고 있음

 - 유지보수 : 주기적으로 업데이트할 것

 - 커뮤니티 : 가능하다면 커뮤니티의 리더 역할 수행할 것.

 - 모듈성 : 설치한 모델은 프로젝트에 최소한의 영향을 미쳐야 하기 때문에 모듈성에 집중할 것

 - 파이썬 패키지 인덱스에 올리기 : PyPI에 올리기. 

 - 가능한 한 세세하게 requirements 스펙을 작성할 것 : 단순히 django-xxx==x.x.x보다는 django-xxx>=1.5, <1.9 등으로 범위로 작성할 것

 - 버전 번호 붙이기 : A.B.C 형태로 붙일 것 A는 메이저 버전(하위 호환을 지원하지 않을 정도록 크게 변할 때), B는 마이너 버전(상대적으로 비호환 문제가 크지 않는 경우), C는 버그 수정 릴리즈(마이크로 릴리즈)

 - 이름 : 이름을 잘 지어야 사용자의 눈에 더 잘 띄고 기억하기 쉬움. PyPI에 등록되어 있는지 확인할 것. Djangopackages.com에 등록되어 있는지 확인할 것. 

 - 라이선스 : 개인이라면 MIT 라이선스 추천. 특허에 대해 걱정한다면 아파치 라이선스 추천 http://choosealicense.com 

 - 코드의 간결성 : 최대한 단순하고 간결하게 구성할 것

 - URL namespace를 이용할 것 : 프로젝트 간에 충돌을 막을 수 있음

 

11. 쉬운 방법으로 패키지 제작하기 : 저자가 소개하는 쿠키커터를 이용해서 작업을 간편히 할 수 있음

 

12. 오픈 소스 패키지 관리 : 너무 과도한 부담과 피로로 오픈 소스에 질려버리지 말 것. 재미나 자원봉사에 의의를 둘 것.

 - 풀 요청에 대한 보상 : CONTRIBUTORS.txt 또는 AUTHORS.txt 에 공헌한 사람의 이름을 넣을 것.

 - 반영될 수 없는 풀 요청에 대해 : 최대한 친절하고 긍정적 자세로 임할 것.

 - 파이썬 패키지 인덱스에 정식으로 릴리스하기

 - 휠을 생성하고 파이썬 패키지 인덱스로 배포하기 : 휠은 새로운 파이썬 배포 표준. 에그를 대체하는 목적으로 더 빠른 설치 및 안전한 디지털 서명을 포함한 여러 장점 제공.

 - 새 장고 버전으로 패키지 업그레이드하기

 - 보안 문제에 대해 항상 주의할 것

 - 기본 예제 템플릿을 제공할 것

 - 패키지의 숙명 : 언젠가 패키지에서 손 뗄 상황이 올 수 있다. 다른 이에게 권한을 넘길 수도 있고 묻어 버릴 수도 있다.

 

이번장은 내용이 엄청 많았다.

그냥 쓱쓱쓱 읽어나가도 되긴 하지만, 그래도 필요한 내용들을 적다 보니 꽤 많은 듯.

 

 

 

 

반응형

'Study > Python' 카테고리의 다른 글

Two Scoops of Django - #23장  (0) 2021.06.24
Two Scoops of Django - #22장  (0) 2021.06.23
Two Scoops of Django - #20장  (1) 2021.06.21
Two Scoops of Django - #19장  (0) 2021.06.20
Two Scoops of Django - #18장  (0) 2021.06.19
Comments