개발을 처음 시작하거나, 클라이언트 프로그래밍 위주로 개발했다면, 보통 개발환경의 파일시스템에 데이터를 저장하곤 했을 것이다.
혼자 개발을 하거나, standalone 서비스를 개발한다면 이것으로도 충분하겠지만(어디 한번 파일시스템을 관리해보시지 하하하), 여러 사람과 공유하는 서비스나 보관할 데이터의 구조가 복잡할 경우, 파일 시스템으로는 관리가 어려울 것이다.
위의 어려움을 해소하기 위한 도구가 데이터베이스이며, 크게 RDB, NoSql로 나뉘게 되는데, 오늘은 RDB에 대해서 주로 설명할 것이다.
RDB는 관계형 데이터베이스라고 번역되는데, 이름 그대로의 특징을 지니고 있다.
이러한 관계형 데이터베이스는 아래와 같은 제품이 있다.
돈 없는 학생은 보통은 오픈 소스인 MySQL, MariaDB를 많이 사용한다. 무료니까
MySQL도 오픈 소스로 무료인 것으로 알고있지만, 기업이 사용하기에는 어느정도 제약이 있기 때문에, MariaDB를 주로 쓰는 것으로 알고 있다.
이러한 데이터베이스 제품을 전부 알아야하는가..? 걱정이 많겠지만, 기업이 사용하는 데이터베이스는 어느정도 통일된 느낌이고, 공부한 데이터베이스 제품과 다르더라도 문법이 대부분 비슷하고(MariaDB는 애초에 엄마가 MySQL이다), cs와 마찬가지로 거기서 거기인 느낌이기 때문에(깊게 들어가면 다르겠지만) 마음에 드는 것으로 선택하면 되겠다.
이러한 데이터베이스를 다루는 툴로 여러 DBMS가 있는데, 현재 우리 팀의 프로젝트에서는 Postgresql을 사용하고 있고, 이를 관리하는 pgadmin이라는 DBMS툴을 얼마전에 도입해서 링크만 짧게 소개하도록 하겠다.
이걸 도입하기 전에는 db를 관리할 때, cli로 접근했는데 사람 할 짓이 안된다. 제발 dbms쓰자
AWS에서 데이터베이스를 사용하는 방법으로는 크게 두가지 방법이 있다.
여기서 첫번째 방법은 데이터베이스 설치, EC2 관리, 장애 발생 대응 등 매우 불편하다. RDS를 사용한다면, aws가 OS, 스케일링, 데이터베이스 설치, 모니터링, 가용성을 관리해주기 때문에 자금만 충분하다면, RDS를 쓰는게 매우 편리할 것이다.
RDS는 다음과 같은 4개의 요소로 구성된다.
위와 같은 데이터베이스는 사진과 동영상 같은 크기가 큰 데이터를 저장할 수 없다.
EC2 인스턴스에 EBS라는 hdd, ssd로 구성된 저장 공간을 제공하지만, EC2 인스턴스가 수정되거나 다시 시작되면 휘발되기 때문에 데이터를 영구 저장하기에는 적합하지 않다.
아마존에서는 이 문제를 해결하기 위해 S3라는 매니지드 서비스를 제공한다. RDS와 마찬가지로 S3 또한 데이터 관리에만 신경쓰면 되며, 모니터링, 스케일링, OS와 같은 인프라 관리에 신경을 쓸 필요가 없다.
S3는 LB, RDS, EC2 같은 서비스와는 다르게 VPC 밖에 생성된다. 그렇기에 접근 방법에는 크게 두가지가 있는데,
인터넷으로부터의 접근은 서비스를 구현할 때는 고려하지 않아도 되기 때문에, 두번째만 고려하여도 될 것이다.
보통은 사용자가 데이터 저장을 요청할 때, 요청자의 인증을 거쳐야하기 때문에, 웹서버를 통해 s3에 접근하는 경우가 많을 것이기 때문이다.
글 잘 봤습니다.