서버는 Fun하고 Cool하고 Sexy하게 개발해야 합니다.

EntryDSM·2020년 6월 3일
11
post-thumbnail

안녕하세요. 대덕소프트웨어 마이스터고 입학전형 시스템 Entry에서 2년째 서버 개발을 맡고 있는 3학년 황신우라고 합니다. 최고의 습관이 위인을 만든다라는 신념을 가지고 꿈을 이루기 위해 노력하고 있습니다. 이번 글을 읽고 서버에 관심이 생겨 백엔드 개발자가 되는 친구들이 있다면 매우 뿌듯할 것 같습니다. 혹시 서버 개발에 관심이 있거나 여러가지 궁금한 것이 있다면 언제든지 질문해주세요. 페이스북 깃허브

서버 터졌다!


대덕소프트웨어 마이스터고등학교에 오신 여러분은 '서버 터졌다!', '서버 점검중' 이라는 말을 한번 쯤은 들어보셨을 겁니다. 특히 온라인 게임을 즐겨하시는 분이시라면 자주 들었을 단어, 서버가 6차시 주제입니다.

서버(Server)란?

3차시를 열심히 본 친구들이라면 서버가 특수한 장비들을 의미하는 것이 아닌 서버라는 역할을 하는 컴퓨터라는 것을 알고 있을 것입니다. 정확한 서버의 정의는 위키 백과에 다음과 같이 정리되어 있습니다.

서버(server)는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server program) 또는 장치(device)를 의미한다.

우리 집 컴퓨터도 서버가 될 수 있다고?


서버의 역할

앞서 서버의 역할을 하면 서버 컴퓨터가 된다고 했습니다. 그렇다면 서버의 역할이 정확히 무엇일까요?

우리는 지금까지 정보를 요청하고 제공받는 사용자의 입장에서만 컴퓨터를 사용해왔습니다. 그런데 어느날 가지고 있던 컴퓨터 내에 있는 파일을 친구들과 공유하기 위해 친구들의 컴퓨터가 원격으로 우리 컴퓨터에 접속하게 하였습니다. 그 때부터 우리의 컴퓨터는 서버 컴퓨터가 되는 것입니다.

즉, 클라이언트(사용자)에게 네트워크를 통해 정보를 제공하는 역할을 한다면 서버 컴퓨터가 될 수 있는 것입니다.

다양한 서버 종류

앞서 서버는 정보를 제공하는 컴퓨터들을 의미한다고 했습니다. 그렇다면 여러가지 서버의 종류를 어떻게 구분할 까요?

정답은 제공하는 정보의 종류로 서버의 종류를 구분합니다. 지금부터 다양한 정보를 제공하는 서버들을 알아보겠습니다.

1. 웹 서버

웹 서버는 웹 페이지(HTML 파일)을 제공해 주는 서버로, 설치된 웹 서버 프로그램(아파치, Nginx)로 HTTP를 사용하여 웹 페이지를 제공하며 도메인 이름을 가지고 있습니다. 만약 사용자가 웹 브라우저에서 URL로 https://entrydsm.hs.kr 을 입력하면 도메인이 entrydsm.hs.kr인 서버에게 웹 페이지를 요청하고 서버는 index.html 파일을 찾아서 제공합니다.

2. 컴퓨팅 서버

컴퓨팅 서버란 다양한 분야에서 사용되는 초고속/대용량 연산 처리 서버를 의미합니다. 슈퍼컴퓨터가 대표적인 예시인데, 과학 기술 연산, 군사, 경제, 사회 통계 등 폭넓은 분야에 사용되고 있습니다.

3. 데이터베이스 서버

데이터베이스 서버란 많은 양의 데이터를 영구적으로 보관하고 관리하기 위해서 데이터베이스를 구동하는 서버를 의미합니다. 대표적으로 MySQL, SQL Server, Oracle 등이 있습니다.

4. 파일 서버

파일 서버는 인터넷을 통해서 한 컴퓨터에서 다른 컴퓨터로 파일을 제공하는 서버입니다. 대표적으로 FTP 프로토콜을 이용하는 FTP 서버가 있습니다.

5. 게임 서버

게임 서버란 멀티플레이 온라인 게임을 즐기기 위해 게임 클라이언트에 쓰이는 서버로, 특정 유저의 컴퓨터가 사람의 컴퓨터에서 실행되는 것을 의미한다.

6. 메일 서버

메일 서버는 인터넷을 통해 서로 메일을 송/수신 할 수 있도록 서비스를 제공하는 서버입니다. SMTP, POP 과 같은 프로토콜을 이용하여 구현할 수 있습니다.

나 서버개발자 될래!


위와 같이 클라이언트에게 다양한 정보를 제공하는 서비스를 제공하는 서버를 개발하는 것이 서버 개발자들의 업무입니다. 그렇다면 서버 개발자가 되기 위해서는 어떤 것을 공부해야 할까요?

다음 커리큘럼은 https://roadmap.sh/backend에 나와있는 백엔드 개발자 커리큘럼입니다.

위의 커리큘럼을 참고하여 공부하면 내가 어떤 것을 공부해야 할지 파악하고 기본을 쌓는데에 도움이 많이 됩니다. 하지만 가장 중요한 것은 내가 만들고 싶은 것을 정하고 그것을 구현하기 위한 공부를 하는 것입니다. 목표 없이 공부만 하는 것보다 내가 생각하고 있는 것을 현실로 만들기 위해 공부하는 것이 훨씬 빠르고 재밌게 성장할 수 있을 것입니다.

Entry에서 서버 개발자가 개발하는 것들


교내 입학 전형 시스템 Entry는 신입생과 선생님들을 대상으로 웹 서비스를 제공합니다. 따라서 서버 개발자들은 웹 서버 를 개발합니다.

Entry 시스템은 크게 Main, Admin, Q&A 이렇게 3개로 구성되어 있습니다. Entry 서버 개발자가 된다면 각 시스템에 소속되어 다음과 같은 기능을 개발하게 될 것입니다.

Main

  • 학생들의 로그인, 회원가입 기능
  • 학생들의 원서, 학력 정보 등을 저장하고 제공하는 기능
  • 입력한 원서를 미리보기로 확인할 수 있는 기능

Admin

  • 지원한 학생들의 원서들을 리스트로 관리할 수 있는 기능
  • 지역별, 전형별 접수 현황과 성적 분포표를 제공하는 기능
  • 지원자들의 정보를 엑셀 파일로 제공하는 기능

Q&A

  • 실시간으로 문의자와 관리자가 채팅할 수 있는 기능
profile
대덕소프트웨어마이스터고등학교의 입학전형 시스템을 만드는 EntryDSM팀 입니다.

2개의 댓글

comment-user-thumbnail
2020년 6월 4일

와... 마이스터고에서는 고등학생이 직접 입학시스템을 만드는군요..... 👍
엑박뜨는 이미지가 몇개 있네요ㅠㅠ

답글 달기
comment-user-thumbnail
2021년 8월 13일

What a great content I have learnt a lot regarding the backend development but it is not in a proper roadmap so I will suggest you to learn more: https://veteranlogix.com/roadmap-of-back-end-development-2020/

답글 달기