데이터베이스와 API에 대한 궁금증
직접 코드를 이용해서 데이터베이스에 접근해서 사용하는 방식보다.
프론트단을 따로 작성하고 API서버를 구성해서 프론트엔드에서 API를 통한 접근이 트랜드인가요?
php를 위주로 사용해서 node와 리액트로 해보려는데 구조를 어떤 식으로 구성해서 작업해봐야 하는지 혼란스러워서 질문합니다.
안녕하세요.
언급하신 내용 중 두번째 방식처럼 API 서버를 구성해서 데이터를 서빙하는 것이 일반적입니다.
더 많은 이유가 있겠지만 제가 아는 범위에서 설명드려보겠습니다.
- 가장 문제가 될만한 부분은 프론트 단에 직접 데이터베이스를 다루는 코드가 들어가면 데이터베이스 연결 정보, 스키마 정보가 악의적인 목적을 가진 사용자에게 그대로 노출될 수 있기 때문에 보안상 굉장히 위험합니다.
- 서비스 운영 중 데이터베이스 레이어에 변경점이 생겨서 엔드 포인트나 스키마 변경이 발생할 때 이미 배포된 앱이나 프로그램을 모두 다시 재설치 하거나 재배포 해야 하는 상황이 생길 수 있습니다. 별도의 API 서버가 있는 경우 API 서버에만 변경점을 적용해도 되는 것과 비교해서 비용 차이가 큽니다.
- 각각의 앱이나 프로그램에서 데이터베이스에 직접 연결을 할 경우 데이터베이스 가용 커넥션 수를 초과하게 되어 서비스가 불가능한 상태가 될 수 있습니다. 사용자가 정해져있고, 수가 적은 상황이라면 관계가 없는 얘기일 수 있겠지만요.
- 별도 API 서버를 마련하면 자주 참조되거나 잘 변경되지 않는 데이터는 API 서버가 캐싱을 해줄 수 있기 때문에 데이터베이스에 발생하는 서버 부하를 줄여줄 수 있어서 좋습니다.
감사합니다.