Architecture Decision Record

Active theme: Light

← 의사결정 기록 예시

Python Django 프레임워크에 대한 아키텍처 의사결정 기록

결정 날짜: 2021-07-15

상태: 수락됨

맥락

우리 조직은 고객 데이터를 관리하는 웹 애플리케이션을 개발할 계획입니다. 프로그래밍 언어로 Python을 선택했으며 애플리케이션 개발을 위한 웹 프레임워크로 Django를 검토하고 있습니다.

결정

우리는 웹 애플리케이션 개발에 Django 웹 프레임워크를 사용하기로 결정했습니다. Django는 웹 애플리케이션을 빠르고 효율적으로 구축하기 위한 견고한 도구와 기능 집합을 제공합니다.

요인

결정에 영향을 준 요인 중 일부는 다음과 같습니다:

  1. 객체-관계 매핑(ORM): Django에는 SQL 쿼리를 작성하지 않고도 데이터베이스와 상호작용할 수 있는 내장 ORM이 있습니다. 이는 애플리케이션을 개발하고 장기적으로 유지보수하기 쉽게 합니다.

  2. MVC 프레임워크: Django는 모델-뷰-컨트롤러(MVC) 아키텍처를 따르므로 애플리케이션의 비즈니스 로직과 프레젠테이션 계층을 분리하기가 더 쉽습니다.

  3. 확장성: Django는 확장성으로 잘 알려져 있어 대규모 애플리케이션을 개발하는 데 훌륭한 선택입니다.

  4. 보안: Django에는 크로스 사이트 스크립팅(XSS)과 SQL 인젝션 같은 일반적인 웹 공격에 대한 보호 등 내장 보안 기능이 있습니다.

  5. 커뮤니티 지원: Django에는 지원을 제공하고 프레임워크 개발에 기여하는 크고 활발한 커뮤니티가 있습니다.

검토한 대안

우리는 Flask와 Pyramid 같은 다른 웹 프레임워크를 검토했습니다. 그러나 Django가 더 성숙하고 확고히 자리 잡은, 견고한 기능 집합을 갖춘 프레임워크임을 알게 되었습니다.

또한 웹 프레임워크 없이 SQLAlchemy와 Flask-RESTful 같은 라이브러리를 사용하여 애플리케이션을 개발하는 방안도 논의했습니다. 그러나 Django가 더 폭넓은 기능을 제공하므로 완전한 웹 애플리케이션에 더 나은 선택임을 알게 되었습니다.

결과

Django 도입은 다음과 같은 결과로 이어질 것입니다:

  1. Django의 내장 도구와 기능 덕분에 애플리케이션을 개발하고 유지보수하기 쉬워집니다.

  2. 비즈니스 로직과 프레젠테이션 계층의 분리로 코드가 더 체계적이고 유지보수하기 쉬워집니다.

  3. 애플리케이션의 확장성과 견고성.

  4. 일반적인 웹 공격으로부터 애플리케이션을 보호하는 데 도움이 되는 내장 보안 기능.

  5. 지원을 받을 수 있는 크고 활발한 커뮤니티에 대한 접근.

우리는 Django가 다른 프레임워크보다 학습 곡선이 가파르다는 것을 이해하지만, 그것이 제공하는 장기적 이점을 생각하면 투자할 가치가 있다고 봅니다.

결론

검토한 요인을 바탕으로 우리는 웹 애플리케이션 개발에 Django 웹 프레임워크를 사용하기로 결정했습니다. Django의 기능, 커뮤니티 지원, 확장성이 완전한 웹 애플리케이션을 구축하는 데 가장 좋은 선택이라고 믿습니다. 프레임워크가 효과적이고 효율적으로 사용되도록 개발자에게 Django 사용법을 교육할 것입니다.