문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 서버 (문단 편집) === [[DIY|서버 프로그램을 직접 만들기]] === 만들려는 서버가 웹 서버라면 웹용 서버 라이브러리를 가져다 쓰면 된다. 고부하를 견딜 수는 없지만 보통 이들 서버 소프트웨어는 클라우드 환경에서 로드 밸런서의 지원을 상정하기 때문에 별 문제가 되지 않는다. 그러나 클라우드 서비스에서 제공하는 부하 분산 및 보안 지원을 받지 않고 '''직접''' [[TCP/IP]]의 깊숙한 곳까지 건드리려 한다면 그때는 이야기가 확 달라진다. 네트워크 전문 지식을 가진 고급 [[프로그래머]]가 필요해지는데 전 세계를 다 뒤져도 이만큼의 네트워크 프로그래밍이 가능한 사람은 흔치 않다. 네트워크같은 비동기 병렬처리를 구현할 때 C/C++은 생산성이 크게 떨어진다. [* 단, 이는 어떻게 구현하는가에 따라 달려있다. 비동기 프로그래밍을 지원받지 않고 직접 비동기 처리를 구현한다면, 버그도 많고 생산성도 최악일 것이다. 그러나 별도의 비동기 프로그래밍 라이브러리를 (예를 들면, Boost.Coroutine이 있다.) 사용한다면 비동기 프로그래밍을 지원받을 수 있기 때문에 큰 문제는 아니다. C++20부터는 아애 비동기 프로그래밍에 대한 지원이 표준 라이브러리에 추가될 예정이다.] 과거에는 언어의 종류가 한정적이어서 C/C++을 주로 사용했지만, 현대에는 [[Go(프로그래밍 언어)|Go 언어]]나 [[Erlang]]같이 비동기 네트워크 프로그래밍을 직접 지원하는 언어도 있고, 이러한 언어를 사용해서 생산성을 높일 수 있다. 굳이 서버 소프트웨어를 자작해야 한다면 네트워크 프로그래밍을 지원하는 언어 및 프레임워크를 반드시 고려하자. 2년 분의 작업량이 한 달로 줄어드는 기적을 볼 수도 있다.[* 그러나 OSI레이어의 3레벨 아래쪽의 저수준 네트워크 스택을 개발할 때는 C언어가 올바른 선택이다. 이쯤 가면 기계제어의 영역에 들어가기 때문이다.] 타인이 만들어 놓은 '''충분히 검증된''' 프로그램이 있다면 가능한 가져다가(또는 사다가) 쓰는 게 나은 선택이다. 이미 존재하는 프로그램을 다시 비슷하게 만드는 행동은 취미나 학습, 연구개발 등의 목적이 아니라면 가치가 무의미한 삽질에 불과하다. 참고로 직접 서버 프로그램을 만들거나 라이브러리를 이용하는 것의 장점은 '''활용도가 무궁무진'''하다는 것이다. 다음은 유명한 서버 라이브러리이다. * Node.js: express저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기