코드오케이넷(코덕넷)은 코드에 심취한 사람들의 생각을 담는 공간입니다.
스타트업을 위한 기술 스택
필자가 스타트업 개발자들에게 가장 많이 받는 질문은 기술 스택을 어떻게 구성할 것인가 이다. 심지어 개발자가 아닌 창업자들도 기술 스택에 대해 자문을 구해오곤 한다. 그래서, FAQ 삼아 스타트업에게 적합한 기술 스택을 정리해보기로 했다.
본론으로 들어가기에 앞서 잠시 스타트업의 정의에 대해 합의하고 싶다. 필자는 린 스타트업 의 저자 에릭 리스 의 정의를 좋아한다.
A startup is a human institution designed to create a new product or service under conditions of extreme uncertainty.
쉽게 말해서 스타트업은 아주 불확실한 일을 하는 팀이라는 것이고 이 글에서 제시하는 기술 스택 역시 이런 특성을 고려할 것이다.
경고: 이 글은 코덕넷 의 다른 기사와 마찬가지로 객관적이고 중립적인 관점이 아니라, 필자의 경험과 지식에 따라 과감하고 단정적으로 기술을 평가할 것 이다. 만일 자신이 사용하는 기술에 대한 부정적인 견해를 접했을 때 기분이 상하는 성격의 소유자라면 이 글은 더 이상 읽지 않기를 권한다.
...서버 프로세스를 관리하는 올바른 방법
웹사이트 개발을 완료하고 서비스할 프로덕션(production) 서버에 배치(deploy)할 때 고민하게 되는 문제 중 하나가 서버에서 띄워야 하는 여러 가지 프로세스들을 어떻게 띄울 것인가 하는 문제다. 프로세스가 죽으면 다시 띄우는 것도 물론 필요하다. monit 이나 supervisord , god 등은 이런 목적으로 나온 것이다(몇 가지 부가적인 목적이 더 있긴 하다). 하지만 이건 OS에 대한 이해 부족에서 나온 것이다. 프로세스 관리는 OS의 핵심적인 기반이 되는 기능이다. 본 연구에서는 왜 monit 등이 잘못된 선택인지, 올바른 방법은 무엇인지에 대해 다룰 것이다.
...패스워드 보안의 기술
패스워드를 안전하게 저장하는 것은 인터넷 서비스의 기본이지만 과거 국내 서비스에서는 잘 지켜지지 않았던 부분이다. 지금은 개발자들 사이에 패스워드 보안의 중요성에 대한 인식이 퍼져서 비교적 상황이 나아졌으나, 아직도 제대로 하지 않는 사이트가 적지 않고, 심지어 패스워드 입력 인터페이스만 봐도 문제가 있는 것으로 추정되는 경우가 많다. 하지만 이미 패스워드를 안전하게 저장하는 방법은 정답이 나와 있는 상태이므로, 본 연구에서는 정답에 대해서는 간단하게 소개하고, 왜 그런 정답이 도출되었는지에 대해 집중적으로 파고 들 것이다. 즉, 이 글은 실용적인 목적보다도 패스워드 보안 기술에 대한 개발자의 호기심을 충족시켜주는데 초점을 맞출 것이다.
정답부터 간단히 이야기하면 pbkdf2, bcrypt, scrypt 중에 하나를 써서 패스워드를 암호화하면 된다. 다행스러운 것은 수년 전 md5 파동 이후 패스워드 보안에 대한 개발자들의 관심이 높아져서 데이터베이스에 md5로 바로 패스워드를 저장하는 개발자들은 많아 사라졌고, 정답을 쓰는 곳도 많아졌다. Django 같은 프레임웍에서는 기본으로 강력한 패스워드 저장 방식을 채택 하고 있기 때문에 본의 아니게 안전하게 저장하고 있는 개발자도 많다. 실용적인 관점에서 이 글을 읽는 독자는 올바른 패스워드 저장 방식 으로 바로 점프해서 읽으면 된다.
다음의 주제들은 실제로 필자가 과거에 패스워드 보안을 다루면서 느꼈던 의문, 혹은 다른 개발자에게 질문을 받았던 것이다.
- 패스워드를 해싱해야 하는 이유
- 왜 양방향 암호화는 안되는가
- md5를 비롯한 단방향 해싱의 크랙 방법
- salt는 SHA 256 같은 강력한 해시 알고리즘을 쓰더라도 필요한가?
- 권장할 만한 패스워드 저장 방식
이 글에서는 위의 의문에 답하고자 한다.
...