장고 외 타 프레임워크가 무엇이 있고 차이점은 무엇이 있나요?
같은 파이썬을 사용하는 프레임워크로는 flask, fastapi가 있다.
flask와 django는 동기적인 프로그래밍 모델을 따르는 WSGI를 사용한 파이썬 웹 애플리케이션과 웹 서버 간의 인터페이스로서 사용하지만 fastapi는 비동기 웹 애플리케이션을 위한 파이썬 웹 서버와 웹 프레임워크 간의 인터페이스인 ASGI를 사용한다. 이는 ASGI를 기반으로 비동기 처리를 지원하여 더 빠르고 효율적인 웹 애플리케이션을 개발할 수 있게 해준다.
fastapi는 특히 api 개발에 초점을 맞추어 설계되었고 높은 성능과 직관적인 문법을 제공
그 외에도 java를 사용하는 spring, js를 사용하는 node.js, vue.js, ruby를 사용하는 ruby on rails, kotlin의 android 등 여러 프레임워크가 있다.
Django와 Flask는 같은 파이썬 언어로 되어있지만 차이가 있습니다. 어떤 차이가 있는지 설명해주세요.
flask는 프로젝트 마다 1개의 app을 개발하도록 되어 있지만 django는 한 프로젝트 내에 다양한 app이 존재할 수 있다. 이는 재사용 가능한 코드를 작성하기 쉽고 개별 프로젝트 관리가 편하다.
flask는 따로 orm이 없어서 sqlalchemy를 사용하지만 django는 orm이 있다.
django는 대부분의 기능을 지원하지만 내가 원하는 기능이 따로 있다면 추가하는게 flask보다 껄끄러울 수 있다. flask는 마이크로 프레임워크로 확장과 커스터마이징이 편하기 때문에
장고의 ORM과 SQL 쿼리 간에 어떤 장단점이 있나요? 어떤 상황에서 각각을 사용하시나요?
장고의 ORM 은 사용자가 보다 편하게 데이터베이스 쿼리문을 사용할 수 있도록 돕습니다. ORM 을 사용하면 SQL 문을 사용하지 않아도 데이터베이스를 수정하거나 객체를 가져오는 작업 등을 수행할 수 있다.
다만 ORM 을 통해 모든 SQL 문을 수행할 수 있는 것은 아니며, 락을 걸거나 이중 쿼리문을 쓰는 등 복잡한 작업을 수행할 때에는 오히려 SQL 문보다 효율이 떨어지기도 합니다. 특히 작업해야 하는 데이터베이스가 복잡할 수록 ORM 남용은 지양하는 것이 좋습니다.
orm을 사용하면 쿼리의 최적화가 되지 않아 속도 문제가 발생할 수 있다.
orm을 사용하면 sql injection과 같은 해킹 공격에 상대적으로 좋다.