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