웹 서비스를 만들다 보면 이미지를 저장해야 할 때가 오는데 이미지는 어디에 저장해야 될까요?
얻어갈 지식
- 이미지 저장은 어디에?
이미지 저장
웹 서비스를 만들다 보면 이미지를 저장해야 될 순간이 옵니다.
이미지는 아래 그림 1)에 있는 3가지 장소에 각각 저장할 수 있습니다. 각각의 장단점을 알아봅시다.
* Program은 서버, Storage는 파일 시스템, Database는 데이터 베이스라고 칭하겠습니다.
파일 시스템에 저장
이미지는 파일 시스템에 저장하고 데이터 베이스에는 해당 파일의 URL이나 파일 이름만 저장하는 방법입니다.
보통 파일 시스템은 데이터 베이스에 비해 값이 저렴하므로 같은 용량의 이미지를 저장할 때 데이터 베이스에 비해 경제적이며 데이터 베이스에 이미지를 저장하는 경우보다 작업을 빠르게 처리할 수 있습니다.
다만, 이미지의 주소를 알고 있는 누구나 이미지에 접근할 수 있기 때문에 대부분 추가적인 보안 처리가 필요합니다.
데이터 베이스에 저장
가장 직관적인 방법입니다. 이미지를 모두 데이터 베이스에 저장하는 방법입니다.
이 경우 이미지까지 트랜잭션에 포함시킬 수 있다는 장점이 있습니다.
* 파일 시스템을 사용하는 경우 파일 시스템에는 이미지가 들어갔는데 DB에는 관련 값이 들어가 있지 않을 수도 있고, 혹은 그 반대의 경우가 일어날 수도 있습니다.
다만, 앞서 말했듯 데이터베이스는 파일 시스템보다 값이 비싸기 때문에 파일 시스템에 저장하는 것이 경제적이며, 크기가 큰 이미지를 데이터베이스에 저장하면 성능 저하가 발생할 가능성이 높습니다. 따라서 데이터베이스는 이미지의 URL이나 파일 이름 등을 저장하여 해당 이미지를 참조하는 방식을 사용하는 것이 더 좋아 보입니다.
서버에 파일을 직접 저장
이미지를 서비스하고 있는 서버의 로컬에 직접 저장을 하는 방법입니다.
파일을 애플리케이션 서버에 직접 저장하는 것은 가능하지만 이는 여러 가지 이유로 권장되지 않습니다.
첫째, 애플리케이션 서버에 직접 파일을 저장하면, 서버의 디스크 공간이 한정되어 있어서 저장 가능한 파일의 크기나 수가 제한될 수 있습니다. 이는 애플리케이션이 많은 파일을 다루는 경우 성능에 부정적인 영향을 미칠 수 있습니다.
둘째, 외부 서버를 사용하면 파일을 분리하여 저장함으로써, 애플리케이션 서버의 부하를 줄일 수 있습니다. 또한 파일 서버를 별도로 운영함으로써 파일 서버의 디스크 용량을 유동적으로 조절하거나 백업 및 복구를 수행하기 쉬워지며, 애플리케이션 서버의 안정성과 가용성도 향상될 수 있습니다.
결론
이미지는 서버, 데이터 베이스, 파일 시스템에 저장할 수 있으며 각각의 장단이 있으나 보통 외부 서버에 저장하는 것이 권장됩니다. 물론, 저장할 파일의 크기나 종류에 따라 다른 선택도 가능합니다. 참고로, 요즘에는 클라우드 기반의 저장소가 많이 사용되고 있습니다. 그중에서도 Amazon Web Service(AWS)에서 제공하는 S3(Simple Storage Service)는 대규모 파일을 안정적으로 저장할 수 있는 서비스로 많이 사용됩니다.
https://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay
'RDB' 카테고리의 다른 글
MySQL vs MariaDB (0) | 2024.01.18 |
---|---|
postgreSQL - 트랜잭션 격리 수준 (2) | 2023.12.05 |
mariaDB json value값만 가져오기 (0) | 2021.07.21 |