brunch

You can make anything
by writing

C.S.Lewis

by ym Jul 24. 2020

검색엔진에도 오픈 소스가 있다?

스타트업에서 개발자로 일한다는 건

지난 이야기

고민을 안고 스타트업에 들어오고 나서 python 같은 처음 보는 언어들과 환경에서 적응하고 나니까 회사에서 나에게 검색엔진을 담당해보지 않겠냐는 제안이 들어왔는데...

  https://brunch.co.kr/@ymin1103/2


검색 엔진을요? 그걸 제가요?

혹시 검색 엔진 만져볼 생각 있으세요?


이 제안에 대해 자세한 사항이 궁금했던 나는 자세한 사항들을 물어봤다. 여러 질문들이 있었지만 무엇보다도 궁금했던 건 내가 정말 할 수 있는 건가요? 였다. 그도 그럴 것이 개발 경험이라고는 javascript로 server와 DB 연동도 없는 간단한 사이트 짜 본 것과 여기 와서 python 다뤄본 것 정도?

그런데 검색엔진이라뇨! 막연한 두려움이 오는 게 당연했다.

두려움과 함께 이내 호기심과 흥미도 돋아나기 시작했다.


그런 생각들이 모여 내가 던졌던 질문이 바로


그래서 어떻게 만드는 건데요?


였다.


할 생각이 없다는 건 아닌 의미였던 거지.


SW 개발의 세계는 넓디넓다.

IT업계에 있는 분들에게 오픈 소스라는 용어는 너무나 익숙할 것이다. 다만 혹시 이 글을 보고 계시는 다른 업계 분들도 있지 않을까 해서 오픈 소스가 어떤 의미인지 간단하게만 얘기하고 넘어가겠다. 오픈 소스 하면 빼놓을 수 없는 회사인 레드햇에서 오픈 소스가 어떤 의미인지 잘 정리해줬다.


오픈소스란 원래 오픈소스 소프트웨어(Open Source Software, OSS)를 뜻하는 용어입니다. 오픈소스 소프트웨어는 공개적으로 액세스 할 수 있게 설계되어 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드입니다. 오픈소스 소프트웨어는 동료 평가(peer review)와 커뮤니티 기반 프로덕션에 의지하므로, 분산된 동시에 협업 방식으로 개발됩니다. 단일 작성자 또는 기업이 아닌 커뮤니티가 개발하므로 독점적 소프트웨어보다 저렴하고, 유연하며, 지속성이 있습니다.  

출처 : https://www.redhat.com/ko/topics/open-source/what-is-open-source


저 부분에서 오픈소스 소프트웨어는 공개적으로 액세스 할 수 있게 설계되어 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드입니다.라는 문장에 주목하자.


즉, 어떤 코드가 오픈 소스라는 건 기본적으로 누구나 자유롭게 코드나 그 코드를 통해 구현된 프로그램을 이용할 수 있음을 의미한다. 물론 자세한 사항은 각 오픈 소스마다 지정해놓은 라이선스에 따라 다르겠지만 말이다.


예를 들어 내가 웹페이지의 내용을 크롤링하여 문서로 저장하고 싶을 때는 웹페이지 크롤러를 직접 만들 필요 없이 selenium이나 beautifulSoup 같은 훌륭한 오픈 소스 라이브러리를 다운로드하여 편리하게 사용할 수 있다. 이는 기본적으로 selenium이나 beautifulSoup가 오픈 소스이기 때문에 가능한 것이다.


갑자기 오픈 소스 얘기는 왜 하는지 궁금할 수 도 있을 것 같다.


바로 검색 엔진 개발을 위한 오픈 소스 또한 있다는 이야기를 하기 위해서였다.

놀랍지 않은가? 사실 당연하다고 생각할 법도 하다. 하지만 그 당시의 나는 정말로 놀랐었다.

그리고 다행이었다.

세상에 검색 엔진을 위한 오픈 소스도 있다니!


정말 세상에 소프트웨어가 정말 많구나.

SW 세상은 정말 넓디넓고 대단한 개발자들도 참 많구나.



그래서 뭘 쓰는데?

글을 쓰다 보니까 이 회사가 뭐하는 회사인지를 제대로 쓰지 않았던 거 같은데,

우리 회사는 현재 특허 검색 서비스를 만들어 운영하고 있다.


현재 회사의 메인 서비스가 검색인 만큼 검색 엔진의 개발 및 운영이 그만큼 중요하다고 할 수 있다.

하지만 아까 말한 것처럼 다행히도 검색 엔진을 코드 단위부터 새로 개발할 필요는 없다.

잘 만들어진 오픈 소스 소프트웨어가 있기 때문이다.


바로... 그 유명한 ElasticSearch이다.


ElasticSearch가 뭐야?

출처 : https://www.elastic.co/kr/brand

ElasticSearch는 Elastic이라는 회사에서 제공하는 검색 엔진 설루션으로 검색 엔진 개발을 논할 때는 빼놓기 힘든 그런 소프트웨어다. 검색 엔진 개발뿐만 아니라, 로그와 시스템 자원 모니터링 등 수많은 방면에서 사랑받고 있는 친구이다.


ElasticSearch는 루신이라는 검색 엔진 개발을 위한 오픈 소스를 기반으로 제작되었으며 오픈 소스 라이선스를 따라 무료로 사용 가능하며, 비용을 지불하면 수많은 설루션과 기술지원을 함께 제공해준다.

때문에 고객층이 사업을 새로 시작하는 스타트업에서부터 업력이 오래된 대기업들까지 다양하다.


ElasticSearch를 사용하는 방법은 간단하다.


ElasticSearch를 원하는 서버에 설치한 뒤 설정값을 올바르게 변경하고 command line 한 줄로 실행시키면 된다. 물론 검색 엔진 내부에 들어가는 수많은 복잡한 로직을 직접 구현할 필요가 없다.

심지어 구축한 ElasticSearch 서버는 Elastic에서 무료로 제공하는 Kibana라는 프로그램을 이용하면 웹페이지 기반으로 편리하게 관리할 수 있다.


ElasticSearch 덕분에 신생 스타트업인 우리 회사에서도 검색 엔진을 별도의 비용 지불 없이 비교적 쉽게 운영할 수 있는 셈이다.


참 감사한 일이다.


이런 오픈 소스 정책 덕분에 SW 시장이 크게 성장할 수 있었을 거란 생각이 들었다.


하지만 현실은 또 실전이었고

그러면 이제 ElasticSearch란 강력한 도구가 있으니 '그 뒤로 편안하게 검색 엔진 구축하고 하하 호호하고 꽃길만 걸었습니다.' 하고 끝났을까?


물론 그럴 리가 없다.


지금이야 물론 ElasticSearch의 편리함과 강력함을 역설하고 있지만, 그 당시의 나에게는 ElasticSearch는 너무나도 큰 산이자 높디높은 장벽이었다.


앞에서도 말했지만 나는 당시 개발자로서의 경험이 사실상 전무한 상태였다. git도 제대로 써본 적도 없었고, linux 환경 또한 나에게는 너무나 낯선 것이었다. 그런데, ElasticSearch라니 뻔하지 않았겠는가.


어찌 되었든 나는 고민 끝에 사수의 제안을 받아들여 ElasticSearch를 통한 검색 엔진 구축 및 운영 업무를 해보기로 하였다. 어차피 어떤 것이든 모르니까 배우면 되지 않겠느냐는 마음을 품은 채로 말이다.


그리고 나는 ElasticSearch와의 처음 만났다.


내가 ElasticSearch에게  

./bin/elasticsearch

라고 말을 걸자.


ElasticSearch는 이내

org.elasticsearch.bootstrap.StartupException: ElasticsearchException [failed to bind service]; nested: AccessDeniedException[/etc/system-release];

와 같이 외치고는

저 멀리

사라지는 것이었다.


이내 몇 번을 외쳐도 ElasticSearch는

돌아오지 않았다.


...




패닉이 와버렸다.



아까 윗 문단에서 ElasticSearch를 원하는 서버에 설치한 뒤 설정값을 올바르게 변경하고 command line 한 줄로 실행시키면 된다. 

라고, ElasticSearch는 정말 간단하다고 하지 않았던가?


그런데 실행시키는 것조차 이렇게 힘들다니 이게 무슨 일인 거지?

이렇게 ElasticSearch의 애증 어린 이야기가 시작되었다.


앞으로는 ElasticSearch 관련된 기술적인 내용들을 다룰 거 같다.

이제야 좀 개발자가 쓰는 글 모양이 나올지도 모르겠다.


어쨌든 오늘은 이만 여기서.

- 다음 편에 계속 -



 







작가의 이전글 스타트업, 그리고 python과의 첫 만남
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari