한참 빅데이터가 핫했던 시기 오라클이나 테리데이터 같은 비싼 DW로는 한계가 있어
아 몰랑, 대충 아무데이터 다 떄려박자! 하고 떠오른게 Hadoop(하둡) 이었다...
좀 중요한 데이터는 오라클같은 DB에 넣고 덜 중요한 dummy(더미) 데이터들은 하둡으로 옮기는 전략을 많이 썼었다.
하둡이 상대적으로 싸고 저렴했으니까..
하지만 하둡의 치명적인 단점은 저장소와 엔진이 한몸으로 묶여있단 것이다.
나는 엔진만 쓰고 싶어도 구우우욷이 필요없는 저장소가 따라온단것이다..(불필요한 리소스 극혐)
이걸 나눌수 없을까....? 하고 등장하게 된게 바로 MinIO(미니오) 이다.
✅ MinIO(미니오)
AWS S3 API와 완벽하게 호환되는 고성능 오픈소스 객체 스토리지 솔루션 이다.(Key-Value 구조)
S3와 동일한 방식으로 데이터를 저장하고 관리하고 대규모 데이터 저장, 백업 및 클라우드 기반 서비스(K8S)에 최적화 되어있다.
주로 사진, 비디오, 로그 파일, 백업, 컨테이너 이미지 등 구조화되지 않은 데이터를 저장하는 데 자주 사용된다.
✔ 특징
1. 태생이 S3임
AWS 의 S3 동작방식이랑 100% 동일하다.
행여나 나중에 OnPremise에 깔아두고 클라우드로 옮길때 아주 편하다.
2. Go 기반 + SIMD
GoLang 기반으로 짜여져 있고 CPU 병렬처리 명령을 극한으로 활용하여 엄청난 속도를 자랑한다.
3. 설치,실행 단순
하둡은 ㄹㅇ 수십개의 데몬에 5~6개씩 띄워야 하는 반면 미니오는 걍 하드디스크에 설치하고 실행파일 하나만 실행하면 끝
4. 이레이저 코딩
이레이저 코딩이란, 이레이저 코드를 이용하여 데이터를 인코딩하고 데이터 손실시 디코딩 하는 과정을 거쳐 원본 데이터를 복구하는 데이터 복구 기법중 하나다.
미니오는 이 방식을 이용하여 데이터를 쪼개서 분산 저장시킨다.
나중에 디스크 10개중에 5개가 고장나도 데이터가 복구 가능하다.
또한 이 데이터를 쓰지 않으면 보통 비트롯(데이터가 썩음..) 이 되는데 미니오는 이것도 알아서 정리해준다.
5. 보안
이 녀석은 저장할 때 데이터를 AES-256으로 암호화해서 저장하므로 누군가 털어가서 본다 해도 볼 수가 없다.
심지어 또 업로드 할때도 TLS/HTTPS 암호화가 되어있어 중간에 가로채도 못본다.
IAM 도 가능하다.
6. 멀티테넌시 지원
하드웨어 하나로 여러 부서가 나눠쓸수있는 아주 효율적인 놈이다.
✔ 그럼 언제써?
사실 이걸 언제써야 하는지에 있어 나는 엄청 헷갈렸다.
왜냐고? 그냥 좋다 고가용의 스토리지다! 하기엔 내 기준에서 DB와 미니오를 어느 상황에 써야하는지 너무 헷갈렸기 때문이다.
사실 DB가 할 수있는 일을 미니오도 할 수있고, 하지못하는 일들도 미니오는 할 수 있기 때문에,
그럴꺼면 걍 미니오 쓰지 ㅋㅋ 뭐하러 비싼 DB씀? 이란 생각이 지배적이었기 때문
하지만 DB만이 할 수있는 영역이 있다.
👉 정형화 된 데이터며, 실시간으로 계속 검색,변해야하는 데이터일 경우
-> DB에 넣는다.
오 근데 이건 미니오도 걍 넣음되잖아? 싶지만
미니오는 수십만건의 파일에서 뒤적뒤적거린다, (개느림)
하지만 반면 DB는 우리 인덱스 걸고 where 조건 하나면 끝
그리고 데이터를 업데이트 할 때? ㅎㅎ 이때도 미니오는 "수정"이란 개념보단 "뒤집어쓴다(Overwrite)"라는 개념을 보는게 맞겠다.
DB는 걍 update문 치면 끝이다.
또 만약 다른 누군가가 어떠한 데이터를 수정하고 있을 경우 다른 사람이 그 데이터에 접근을 했다?
DB는 원자성이 보장되므로 일관된 데이터를 보장하는 반면, 미니오는? 먼저 수정한 사람 장땡ㅋㅋ
즉, 우리가 주로 실시간성인 라이브 데이터들은 DB에 넣고
불변하는 데이터들 이미지,백업파일,로그는 미니오에 보관하면 된다. (하이브리드방식으로)
대충 감이 오쥬?
✔ 그럼 이녀석은 단점이 없는가?
그럴리가!!! 모든 기술엔 한계가 존재하는법
1. 이녀석은 Storage(스토리지) 긴 하지만 "저장소"가 아니라 "웹 서버"로 봐야 한다.
요청을 HTTP로 받으며 아무리 빨라도 네트워크를 무조건 타기 때문에 로컬 디스크보다 반응이 느리다.
0.0001초가 중요한 주식거래 같은곳에선 못쓴다.
2. 큰 파일에만 강함
1GB 짜리 큰거 하나 저장하고 조회하는건 매우 빠르나, 1KB 짜리 파일을 100만개로 쪼개서 저장하게 되면 조회시 엄청 느리다.
하나하나 넣을때 아이고 이건 어디꺼냐, 헤더는 뭐냐.....아이고....
( 그래서 주로 Parquet나 Zip으로 작은 파일들을 하나의 큰 덩어리로 뭉쳐서 넣는다. )
3. text파일에 한줄 추가하는거 못함
아까 말했다시피 이녀석은 "덮어쓰기(overwrite)" 하는 놈이므로 text 파일에 글자 하나, 글자 한줄 추가하는거? 불가능하다.
매번 전체를 다시 써야 한다.
4. 짭 저장소임
ㅋㅋ 파일 폴더처럼 쓸수있어 보이지만 이녀석은 하드가 아니다. (다시 한번 말하지만 HTTP로 통신한다.)
억지로 연결해주는 프로그램(S3FS 등)이 있긴 한데, 느리고 불안정하다.
미니오는 프로그램이 API로 통신하는 스토리지다. 일반 하드처럼 쓰면 안된다.
즉, 사람이 직접 열어서 수정하는 용도가 아니다.
(마운트가 되지만 그건 어디까지나 프로그램들의 조회용으로 써야한다.)
-끝-
'web > AI' 카테고리의 다른 글
| [DataLake] 데이터 파이프라인 만들기 (0) | 2026.01.15 |
|---|---|
| [AI] Spark(스파크) 이해하기 (1) | 2026.01.12 |
| [AI] Hive Metastore (0) | 2026.01.08 |
| [AI] Trino(트리노) 의 개념 이해하기 (1) | 2025.12.30 |
| [AI] 로컬에 LLM 설치하기 (1) | 2025.12.23 |