Crontab과 scp를 이용한 데이터베이스 백업 자동화
드리머리 서비스 베타 테스트 중, 프론트 서버가 테스트 api서버에 연결된 걸 모르고 디비가 날아간 줄 알고 1시간동안 헤맸던 적이 있다. 다시 제대로 연결한 뒤 데이터베이스가 그대로 있는 걸 보고 느꼈던 안도감이란…
다시는 그런 일이 일어나지 않기 위해 백업 자동화를 구현하고자 했다.
우선 해당 ec2 서버 인스턴스 로컬에 백업본을 만들고, 다른 ec2 인스턴스에도 원격으로 백업본을 저장하기로 결정했다.
우리 서비스는 몽고DB를 사용하고 있기에 커맨드라인 명령어 한 줄로 간단하게 백업DB파일을 만들 수 있다.
Dajksta Algorithm
대표적인 그래프 최단 거리 탐색 알고리즘인 다익스트라 알고리즘에 대해 알아보자.
정점 간의 거리, 즉 가중치가 존재하는 그래프 자료구조에서 동작하는 알고리즘이므로 먼저 가중치 그래프를 구현하자.
DFS / BFS
DFS(depth first search)와 BFS(breadth first search)는 트리와 그래프를 탐색할때 사용하는 알고리즘이다. 여기서는 그래프 탐색에 대해 알아보자.
Hash Table
Hash Table 은 key : value 쌍으로 이루어진 자료구조다. array 처럼 대부분의 프로그래밍 언어에 내장되어있으며(자바스크립트의 object, 파이썬의 dictionary 등), 그 편리함과 속도 때문에 매우 빈번하게 사용되는 자료구조이기도 하다.
hash Table 은 크게 key 를 value 의 인덱스로 hashing 하는 hash function 과 실제 값들이 저장되어 있는 bucket 으로 이루어져 있다. 우선 hash function 부터 구현해 보자.
Binary Heap
힙(Heap)은 부모와 자식 간에 일정한 대소 관계가 있는 완전 (이진) 트리 자료구조를 뜻한다. 자식노드의 개수는 힙의 종류에 따라 다르지만, 여기서는 가장 많이 사용되는 이진 트리 힙에 대해서 알아보자.
Linux - 하드링크 & 소프트(심볼릭)링크
윈도우나 맥에는 일반적인 파일에 대한 링크를 의미하는 바로가기 파일이 존재한다. 리눅스에서도 이와 비슷한 기능을 하는 파일이 있는데, 하드 & 소프트(심볼릭) 링크 파일이 그것이다.
Mongoose Model 활용하기
Mongoose 는 mongodb 를 더욱 편리하게 쓸 수 있도록 도와주는 nodejs 라이브러리이다.
오늘은 Mongoose 의 여러 편리한 기능 중 model hook 에 대해 알아보자.