Skip to content

weg901127/webserv

 
 

Repository files navigation

프로젝트 회고(goodbye Norme)

1. Webserv?

  • I/O Multiplexing 서버를 만드는 과제입니다.. C++을 이용합니다.
  • 간단한 요청, 응답 테스트(1억바이트 1억건)를 통과할 수 있는 HTTP/1.1 웹서버를 만드시면 됩니다..
  • 팁을 드리자면 RFC에 모든게 다 있습니다.. 2개만 보시면 됩니다 CGI, HTTP/1.1 과제에 대한 수 많은 공략법이 있습니다.. 하지만 이 과제의 본질은 kqueue, epoll 따위가 아닌 명세를 따르는 소프트웨어를 생산 할 수 있는가? 에 있다고 봅니다.. 따라서 날개 대신에 목이 돌아가는 비둘기를 만드시더라도 꼭 스스로의 힘으로 구현 시도를 해보세요!
  • BSD계열 시스템에서 평가를 받게 됩니다(현재 파리는 우분투를 쓴다고 하네요... 우리도 곧 우분투를 씁니다.. 그때는 epoll을 쓰시는게 좋아보여요..)
  • BSD계열의 시스템에서는 kqueue가 가장 빠른 성능을 보였다! 따라서 우리는 프로젝트에 kqueue를 도입

2. 좋았던 점

  • 학부생 네트워크 수업에서 말로만 듣던 RFC를 보고, 그것에 그치지 않고 그 명세를 따라서 소프트웨어를 만들어본 경험..

  • 42Seoul 입학 후 처음으로 정말 완벽한 팀 빌딩을 경험.. 팀원들 너무 감사합니다.. 스스로 1인분을 온전히 할 수 있었던 드림팀. 가장 감사한 부분은 항상 원활한 소통이 가능했던 점

  • 테스팅 툴(gtest)을 처음으로 도입. 상당히 만족스러운 도구였습니다.. 다만 아쉬운점이 있었는데 아래 설명..

  • JIRA를 처음 도입.. 이 또한 너무 감동적인 도구입니다.. 고급 TODO List.. 팀원들과 원활한 의사소통을 할 수 있었던 가장 큰 이유가 아닐까.. 코드 자체의 퀄리티에도 많은 영향을 줬어요.. 아무래도 생각을 정리하고, 이슈를 작성하고, 코드로 옮기는 과정이 코드에 대해 한번 더 생각할 수 있는 기회를 주는듯..

    혹시 웹서브를 시작하는 팀이 이 글을 보고있다면 JIRA 꼭 사용하세요!

  • Norme을 지키지 않아도 되었지만 다들 마음속에 간직하고 있었군요.. 다른 부분은 몰라도 끝나고 보니 함수가 생각보다 비대하지 않아서 좋았던것.. 이것 또한 아쉬운부분이 남았다.. 아래 설명..

  • 어쨌든 해냈고 빠른편이다!(테스터 통과 55초..) 요청 파싱 과정에서 불필요한 값 복사 과정을 더 줄인다면 성능 향상에 더 도움이 될듯..

3. 아쉬운 점

  • 객체 설계에 시간을 조금 더 들였어야 했습니다.. 아니 정확하게는 객체를 테스트가 용이하게 설계 했어야 합니다.. 설계 단계에서 막연하게 생각했던 부분들이 결국 테스트 불가능한 객체를 만들게된 이유가 되지 않았나.. 모든걸 가지고있는 객체가 아니라 기준을 정해놓고 기준에 따라서 분리 해보고 싶네요... 이것은 Norme에 대한 아쉬움과도 비슷한 결의 이야기인데 C언어 공부를 하면서 이러한 부분들을 충분히 연습 했어야 했다고 생각합니다.. 어쨌든 C에서도 C++에서도 함수는 쓰니까요.. 결국 test를 적용한 부분이 config, autoindex 부분 뿐이라 아쉽지만.. 다음 과제로 남겨둡니다..
  1. 다음 과제
    • 관심사 분리를 적용한 프로젝트 설계(토이프로젝트라도 꼭 해보자!)
    • 그에 따른 테스트가 용이한 프로젝트

serv

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 96.4%
  • CMake 1.7%
  • Other 1.9%