gitlab을 설치하고 있다..

재미삼아 설치해보고 있다. 생각보다 좀 까다롭다. ubuntu 같은 것들은 사용자가 많아서 딱 정해진 과정만 수행할 수 있도록 설치스크립트가 있는데 arch linux는 그런게 없다.

사실 arch linux는 이 맛으로 하는 거지만. ‘니가 알아서..’ 하는 면에 있어서는 arch linux 만한 게 없지만 금방 할 수 있는 뭔가를 하려면 좀 피곤하다.

결국 포기하고 docker container를 하나 가져왔다. 생각보다 매우 편리하다. 아니 거의 거저먹기라고 봐야할 것 같다. 나중에 CI/CD를 돌려봐야 직접 설치하는 것보다 얼마나 좋은지 알 수 있겠지만.

Docker로 사용하면 사실상 docker container 안에 있는 것들은 이를테면 거의 firmware처럼 돌고 나머지 user가 생성하거나 가져온 데이터만 local filesystem의 folder 하나에 volume으로 mount하게 되니까 만일의 사태에 대비하며 해당 folder만 주기적으로 backup해 주면 되니까 말이다.

어쨌거나 여기에 gitlab 말고 설치 되는 것들이 postgre SQL 서버 하나와 redis라는 게 하나 따라 붙는다. ruby가 따라붙는데 gitlab의 일부분이 ruby로 작성되어있다. 생각보다 ruby를 쓰는 웹 앱들이 제법있다. 왜 ruby를 쓰는지는 내가 써봐야 그 장단점을 체감할 수 있으니 나중에 한번 시도해봐야겠다.

postgre야 워낙 유명하고 SQL server이니까 여느 SQL 서버와 다를 게 없구나 치고, 그렇다면 redis는 무엇인가?

redis를 소개하는 홈페이지에 가면 이해하기 어려운 말로 설명이 되어있다.

redis라는 이름은 “Remote Dictionary Server”에서 나온 것이고 그 의미는 아래와 같다고 적혀있다.

”..in-memory data structure store, used as a distributed, in-memory key–value database, cache and message broker, with optional durability..”

간단히 해석하면 db에서 데이터를 주고 받는 작업을 한다고 할 때 그 중간에 끼어서 RAM을 사용하는 cache 기능을 하는 소프트웨어라는 것을 알 수 있다. 더 쉽게 말해서 local filesystem 혹은 remote database를 쓴다고 할 때 access time이 길어지게 되므로 RAM을 사용해서 되도록이면 db access를 줄여서 자원을 절약하는 소프트웨어라고 해석해 볼 수 있다.

특히 이것이 사용하는 데이터의 구조가 기존의 db (relational database: 우리 말로 관계지향형 DB라고 부르는 듯 하다)와 확연히 달라서 SQL의 query 명령과 다르다고 한다. SQL에서는 그놈의 schema (어떤 식으로 record가 구성되는지에 대한 것)를 고정해놓고 쓰게 되는데 여기엔 그런 게 없다고 한다.

더 쉽게 말하면 시스템의 메모리에 자주 사용하는 데이터들을 미리 로딩해놓고 그것들을 매우 빠르게 검색할 수 있게 해주는 db이자 cache가 되겠다. 따라서 처음에는 장기보관을 위한 SQL 서버로 부터 데이터를 읽어다놓고 운용 중에는 RAM으로 부터 직접 읽고 쓰고 하다가 시스템이 널럴할 때 변경사항을 SQL에 쓰는 식으로 가는 것이라고 본다. 따라서, 사용자의 수가 소수라 db access가 많지 않은 경우엔 큰 이득을 보기 쉽지 않을 것으로 보여진다. 사용자의 수가 제법 많고 시스템이 분산화되어있어서 각각의 node에서 특정 데이터만 불러다 쓴다고 보면 main db와의 access가 크게 줄고 실행 속도 또한 대단히 빨라지게 될 것이니까 보나마나 엄청난 이득을 가져온다고 봐야지 싶다.