Node.js 커뮤니티의 복잡한 사정을 떠나서 


Node.js는 장점이 많다.


1. 간결하고 심플한 로직의 웹서버를 빠르게 구현하기에 좋다.

2. 언어의 통일 프론트 엔드 개발과 같은 언어로 진행.

3. 나름 뛰어난 성능, 커뮤니티, 모듈 활성화


하지만 정말 단 한가지 답이 안나오는 문제가 있다. 


노드에 성능을 주고 가져간 가독성.


콜백 문제를 해결할 방법이 없어 보인다.


ES6에 기본으로 들어간 Promise? 해결 책 아니다. 가독성 문제와. 중첩 될 경우 보기 불편한건 매 한가지.


TJ/Co ? Generator.? 그 중에 가장 기대 되는 대안이기는 하다. 가독성 문제도 상당부분 해결되는 부분이기는 하다. 하지만 Go Lang을 접해본 사람이라면 Generator도 절망 적이다. 이미 다른언어에는 기본적으로 존재하는 부분이고. 콜백 가독성 문제를 근원적으로 해결 못한다는 것을 알고 있으니..


Node.js 개발자가 Go language를 접하면 빠져 나올 수 없게되는 부분은 고루틴과 채널이다.


정말 TJ가 왜 Go 진영으로 떠났는지 잠깐만 봐도 알게 된다.


package main
 
import (
    "fmt"
    "time"
)
 
func pinger(c chan string) {
    for i := 0; ; i++ {
        c <- "ping"
    }
}
func printer(c chan string) {
    for {
        msg := <- c
        fmt.Println(msg)
        time.Sleep(time.Second * 1)
    }
}
func main() {
    var chan string = make(chan string)
 
    go pinger(c)
    go printer(c)
 
    var input string
    fmt.Scanln(&input)
}


위에 예제 보이는가 얼마나 간단하게 두개의 코루틴이 실행되고 채널을 통해 데이터를 얼마나 쉽게 전달 받는지.


노드로 비즈니스 로직 짜본 사람이라면 느끼는 절망이 한순간에 사라진다.


노드는 정말 제한적으로 사용해야 되나 보다..


미안 나도 이제 Go Lang으로 갈께... 아닌건 아니니까..











저작자 표시 비영리 변경 금지
신고


티스토리 툴바