보안
DB에 직접 접근하는 것은 보안상의 위험을 초래할 수 있다. 웹 애플리케이션은 일반적으로 사용자와 상호작용하고 중요한 데이터를 처리하기 때문에, DB에 직접 접근하면 악의적인 사용자가 데이터를 조작하거나 민감한 정보에 접근하는 등의 보안 위협이 발생할 수 있다. 따라서, 웹 애플리케이션은 중간 계층 (서버)를 통해 DB에 접근하도록 설계되어 있다.
이때 DB 입장에서는 해당 접근이 어디서부터 왔는지를 구분할 수 없기 때문에 네트워크 계층에서의 요청 패킷 분석을 통해 DB로 향하는 접근이 서버인지, 웹인지 확인한다.
추상화와 모델링
웹 애플리케이션은 주로 사용자 인터페이스를 제공하고 비즈니스 로직을 처리하는데 집중된다. DB에 직접 접근하면 데이터베이스와 관련된 복잡한 쿼리 및 테이블 구조에 대한 지식과 로직이 웹 애플리케이션 코드에 흩어지게 된다. 이는 유지보수의 어려움을 초래할 수 있으며, 추상화 계층을 통해 데이터를 모델링하고 데이터베이스와 상호작용하는 것이 일반적으로 좋은 설계 원칙이다.
확장성과 유연성
웹 애플리케이션은 다양한 기능과 요구사항을 지원하며, 대량의 동시 사용자 처리와 같은 확장성이 필요할 수 있다. 직접적인 DB 접근은 웹 애플리케이션의 확장성을 제한할 수 있으며, 중간 계층을 통해 요청을 처리하고 데이터를 관리하는 것이 더 유연하고 확장 가능한 아키텍처를 구축하는 데 도움이 된다.
이러한 이유로 일반적으로 웹 애플리케이션에서는 DB에 직접 접근하지 않고, 중간 계층 (서버)를 통해 데이터베이스와 상호작용하도록 설계되고 구현된다. 이를 통해 보안, 추상화, 확장성과 유연성 등의 이점을 얻을 수 있다.
'개인 학습 > Flutter' 카테고리의 다른 글
Flutter에서 PostgreSQL DB연동하기 (0) | 2023.05.16 |
---|---|
Flutter 외부 패키지 사용법 (0) | 2023.05.16 |