왜 Redis는 공식적으로 윈도우를 지원하지 않는가?

이 글을 쓰기 전에 리눅스와 맥은 똑같은 유닉스 기반이라 맥도 돌아간다고 가정하고 리눅스만 쓰겠다.


글읽고 나서 맥도 돌아가는데 왜 언급 안하냐는 엉뚱한 댓글 달지 않기를 바란다.


 


사실 Redis에 대해 알게되면서 정말 좋은 녀석이라는걸 알게 됐다. 하지만 궁금해할 수밖에 없었다.


왜 Redis는 윈도우 버전이 없는 것일까?


그리고 기다려보았다.


 


사실 오래 전에 MS OpenTech 에서 Redis 를 윈도우로 포팅해놓은 버전을 공개하였다.


하지만 아쉽게도 배포 환경에서는 사용이 어렵고 개발 단계에서 사용하는것을 추천하고 있다.


그리고 지금도 현재 진행형으로 Redis는 윈도우에서는 비공식이며, 여전히 개발용 버전이다.


왜그럴까?


 


그래서 문득 발견한 링크를 보았다. Redis 개발자 블로그 글이다.

http://oldblog.antirez.com/post/redis-win32-msft-patch.html

 


그리고 이제서 그들이 왜 Redis 를 윈도우 포팅한 것을 하지 않으려 하는지 이해가 갔다.


일단 영맹이나 읽을 시간이 부족한 분들을 위해 요약 하겠다.


 



MS OpenTech가 Redis 윈도우 포팅에 대해서 감사하게 생각하고 있지만 지금은 윈도우 포팅을 할 계획이 없다.


이상하게 MS 는 한번도 Pull Request(SVN의 merge 요청과 비슷)를 건 적이 없었다.


Redis 윈도우에서는 libuv 라이브러리를 사용하는데 node.js 에서 개발하여 사용하는 녀석이다.


크로스 플랫폼을 이뤄낸 일등공신이지만 이것을 특정 플랫폼 때문에 사용하는것은 지양하겠다. Redis가 무거워져 목표에 어긋난다.


또한 Redis 배포 시 윈도우 따로 로우레벨 최적화를 별도로 진행되야 하기 때문에 보안성 향상 등의 배포 시 더 어려운 배포가 이루어져 발빠르게 대응할 수가 없다.

우린 개발자고, 우린 진화해야 한다.

 


어찌보면 “윈도우가 X같아서 할생각이 없구나” 라는 생각이 들기 쉬울 수도 있다.


하지만, 역시 오픈 소스 진영에서는 정말 윈도우는 골치 아픈 존재가 아닐 수가 없다.


리눅스와 맥은 유닉스 기반이고, 표준이 잘 되어 있는 C 라이브러리가 있고, 개발 비용 측면에서도 유리하다.


하지만 윈도우는 독자적 운영체제이고, 개발 도구를 별도로 이용하는 문제 뿐만 아니라 윈도우 표준 라이브러리가 리눅스와 갭이 발생한다. 아마 도전해 본 크로스 플랫폼 씨뿔뿔 개발자는 알 것이다.


비록 Redis 뿐이랴? 다른 오픈 소스 프로젝트도 윈도우 때문에 고충 해결이 쉽지 않다는걸 잘 알고 있다.


그 예로, ape 라는 코멧 기술을 이용한 서버가 있는데, 오픈소스다. 근데 리눅스는 있는데 윈도우는 없다. 똑같은 코드로 윈도우에서 돌릴 방안이 없으니. 별도로 생각할 문제니. 선뜻 나서기 쉽지 않다.


거기다가 Node.js 도 애초에 윈도우에서 돌릴 계획은 없었다. 개발자 또한 그 생각이었다.


하지만 MS가 지원해주는 바람에 결국 Node.js 는 윈도우에서도 돌아가게 되었다.


Redis 프로그램의 위엄을 느낀 MS가 Redis 윈도우 포팅을 지원해줘도 Redis는 거절했다. 조금 특이한 경우다.


 


여러분은 이제 다시한번 윈도우 환경을 생각해 볼 법도 하다.


다양함을 묵살하고 독자 체제로 가는 윈도우를 끔찍히 싫어하는 오픈소스 개발자도 있지만, (특히 GNU빠들)


그와 반대로 윈도우에 지원할 방법을 모색하고 연구하거나 MS 등의 전문 오픈소스 개발자의 도움을 받아 이뤄낸 오픈소스도 있다.


그렇다고 당장에 윈도우 환경을 리눅스로 전향하라는 얘기는 아니다.


만약 지금 서비스 환경이 윈도우에서 잘 돌아가고 있다면, 더이상 고민할 필요는 없지 않는가?


아파치에서 만든 memcached 는 윈도우에서 돌아가니 이걸 대신 이용하는것도 도움이 된다.


 


어쨌든, 오픈소스 진영에서 왜 윈도우꺼 안만드냐고 불만 품지만 말고 왜 그런지도 이해할 필요가 있다.


당신이 어떤 프로그램으로 어떤 서비스를 할 지는 몰라도, 플랫폼 선택은 여러분의 몫이다. 그에 맞는 대안은 얼마든지 있으니까.


이제 Redis 윈도우 안돌아간다고 징징대기 있기 없기?

composite / 2013년 5월 20일 / 미분류

Comments

  1. namo - 2016년 3월 2일 @ 1:07 오후

    결국은 플랫폼에 독립적으로 하기 위한 레이어가 존재하는 게 있느냐죠.

    node.js도 libuv 라는 라이브러리 혹은 추상화 계층을 만들어서 멀티 플랫폼을 만들었는데 레디스에서는 그런 레이어 사용이 싫어던 것이라고 판단 할 수 밖에요.

    Reply

답글 남기기

Your email address will not be published / Required fields are marked *