음
프로그래밍(웹) 외주 최근에 처음으로 뛰어본 사람인데
몽고(Mongoose)랑 노드(Express.js)로 게시판같은거 밑바닥부터 만들었거든
외주 끝나고 나중에 인수인계 때문에 다음 개발자(약간 경력이 있다더라)랑 만나서 얘기하다
내가 만든 결과물이 정말 핵심적인 기능들만 추려서 지원했는데 몽고나 노드로는 그렇게 짜는 게 한계라고 하더라
프로토타입이나 그렇게 하지 제대로 서비스를 구축할 때는 그래서 그런 거 안 쓴다고 하던데
나는 항상 언어의 특성보다는 개발자의 역량에 달렸다고 생각하던 사람이라서
내가 물론 경험이 없어서 어디까지 방대하게 어떻게 구현해야 할지 잘 모르긴 했지만
노드, 몽고로도 충분히 제대로 된 서비스를 짤 수 있을 것 같은데.. 하는 생각이 들더라고
물론 노드는 기본적으로 싱글스레드에 몽고는 거대한 이용자의 경우 느리다는 단점이 있다고 인터넷에서 봤음
근데 이용 퍼포먼스보다는 순전히 '이 밑바닥으로 이러한 구조를 짜는 게 가능할까'라는 얘기에서
노드랑 몽고가 딱히 다른 언어들보다 아래 수준에서 머물러야 하는 한계가 있는 거야?
진짜 변태질 할 생각 있으면 C++로 모듈짜면 된다. 그런데 효율이 안나오지.. JS로 뚝딱하면 뿅하고 나오는데 언제 C++ 변태질하고 있냐. 부족하면 인스턴스 존나 붙이고 클러스터링하면 되지 않을까? 이상 국비개발충이었스니다.
아냐 진짜 언어적한계가 존재해... 결국엔 C++모듈만들고 노드에 붙여쓰게 될거다...
NoSQL 은 기본적으로 원자성을 보장하기 위한 트랜잭션을 고려하지 않아서요, 물론 몽고도 그걸 할려면 할 수는 있는데 그런 SAFE MODE에서는 속도가 한 10배는 느려지긴 합니다.
근데 뭐 몽고도 엔진 개선 계속 되고 있고, 몽고 말고 다른 NoSQL 도 있고 몽고랑 붙여 쓸 수 있는 다른 솔루션들도 있고 해서 국내 대기업 사이즈의 전사 규모에서 일부 실험적으로 몽고 쓰는 곳들도 있고 뭐 그래여
노드나 몽고가 엔터프라이즈 서비스에서 가지는 한계는 언어적 특성이라기보다는 기술적인 베이스의 특성이죠 뭐... SQL이랑 NoSQL 의 차이는 ACID VS BASE 라는 키워드로 한 번 검색 해 보시고... 노드는 말씀하신대로 싱글 스레드 기반의 이벤트 루프라서 그런 거죠. 아랫단계라기보다는 적합한 특성이 다른 거 아닐까 싶네여