📑 이번 주 학습 내용

우리가 기획한 페이지와 기능들은 어떤 과정을 거쳐서 웹에 배포될까요?

그리고 그 과정에서 각 팀은 어떤 역할을 할까요?

이번 주에는 이 두 가지 질문에 대한 답을 함께 찾아가 봐요! 😊

💫 Keyword: 개발 프로세스, 프론트엔드, 백엔드, 인프라, 서비스 기획, PM


프론트엔드? 백엔드? 인프라?

개발 프로세스를 알기 전, 서비스가 동작하는 간단한 원리와 각 팀의 역할을 아는 것이 매우 중요해요!

이해를 돕기 위해서, 공연에 비유해서 각 팀의 역할을 설명할게요.

하나의 공연이 성공적으로 진행되기 위해서는 여러 사람들의 노력이 필요해요. 이때, 관객에게 직접적으로 보이는 부분을 꾸미는 사람들도 있고, 무대에는 직접적으로 보이지는 않지만 무대의 뒤에서 여러 가지 효과를 관리하고 조정하는 사람들도 있을 거예요. 이 모든 과정에서 사용되는 모든 장비와 공연장 전체를 유지 및 보수하는 사람도 있을 거예요.

서비스도 마찬가지예요! 사용자에게 보여지는 화면을 만드는 팀과 사용자에게 보이지 않는 곳에서 데이터베이스를 관리하는 팀, 그리고 서비스가 배포되는 서버를 관리하는 팀이 유기적으로 협업하여 하나의 서비스를 만들고 있어요.

이때, 사용자에게 보이는 화면에서 일어나는 기능을 개발하는 팀을 ‘프론트엔드팀’, 사용자와 서비스의 데이터를 관리하고 처리하는 팀을 ‘백엔드팀’, 서버가 안정적으로 작동할 수 있도록 관리하는 팀을 ‘인프라팀’이라고 말해요.

[꼬기집개] #1 개발자 구분하기, 서비스의 기본 알기
👉 서비스의 구조와 개발자의 역할을 전체적으로 설명하는 영상이에요. 이 영상을 본 후에 아래 내용을 따라간다면 이해가 더 쉬울 거예요!


서비스 기획자와 PM, PO은 다른 직무인가요?

서비스 기획을 공부하다 보면, ‘서비스 기획자’와 ‘PM’, ‘PO’이라는 직무가 자주 언급되는 것을 볼 수 있어요.

비슷해 보이면서도 조금씩 달라 보이는 세 가지 직무는 어떤 차이가 있을까요?

서비스 기획자

먼저, 서비스 기획자는 직무명 그대로, 서비스가 해결해야 할 문제를 정의하고 해결 방안을 도출하여 서비스를 설계하는 사람을 말해요. 경쟁사와 시장을 조사하고, 사용자와 만나 문제를 발견하고, 서비스의 앞단과 뒷단을 모두 고려하여 서비스의 뼈대를 만들어 가는 역할을 해요.

지도 잘 모르면서 👉 서비스 기획자의 역할을 전반적으로 설명하고 있는 글이에요.

PM

PM은 ‘Product Manager’의 줄임말로, 서비스 기획을 넘어 하나의 서비스의 개발 및 운영 체제를 전체적으로 관리하는 사람을 말해요. (여기서 프로덕트는 앱, 웹과 같은 IT 서비스를 의미해요!) 하나의 서비스 뿐만이 아니라 프로덕트의 탄생과 유지 및 보수, 업무 프로세스 등에도 집중해야 해요.

PO

PO는 ‘Product Owner’의 줄임말로, 서비스의 모든 결정권을 갖고 전략 및 로드맵을 수립해 새로운 사업을 시도하는 사람을 말해요. PM이 현재 우리의 프로덕트를 사용하는 사용자에 집중한다면, PO는 더 나아가 프로덕트의 확장을 바라보고 잠재적 사용자의 문제와 필요까지 파악해야 해요. 그래서 PO를 ‘미니 CEO’라고 부르기도 해요!

PM과 PO는 뭐가 다를까? 👉 PM과 PO의 차이를 아주 명확하게 설명하고 있는 글이에요!


웹 서비스는 어떻게 만들어 지나요?

기획부터 개발까지, 웹 개발은 어떤 방식으로 진행될까요?

프로젝트의 성격과 조직 구성에 따라 조금씩 달라질 수 있지만, 기본적인 방식을 설명할게요.

  1. 프로젝트의 목표를 규정해요.
    • 서비스의 목적, 조직의 비전 등을 참고해요.
    • 프로젝트 목표를 달성하기 위해 필요한 구성 요소 - 프로젝트 일정, 미팅 장소, 인적 자원, 인프라 등도 고려해요.
  2. 문제 상황을 정의하고, 태스크를 구체화해요.
    • 프로젝트에서 해결하고자 하는 문제와 기대 목표를 최대한 명확한 언어로 정의하도록 해요.
    • 클라이언트의 요구 사항, 프로젝트의 도메인, 타겟 사용자 등을 분석해 구체적인 목표를 수립할수록 좋아요.
    • 대략적으로 구상했던 프로젝트의 일정을 세분화하고, 계획을 수립해요.
      OKR이란? 뜻과 의미 1분 만에 이해하기 👉 스꾸딩에서 체계적인 일정 관리를 위해 사용하고 있는 ‘OKR’에 대해 알아보아요!
  3. 세부적인 화면을 기획하고 정책을 설계해요.
    • 각 기능의 위치, 형태, 정책 등을 충분히 고민해요.
    • 각 기능과 페이지 등의 에러 케이스, 예외 상황 등을 고려해 데이터 처리 과정 등을 보완해요.
  4. 화면을 디자인해요.
    • 디자인팀은 기획된 화면을 기반으로 실제 서비스에 보여질 화면을 디자인해요.
    • 컴포넌트를 만들고 디자인 가이드를 만드는 과정이 포함될 수 있어요.
  5. 개발을 진행해요.
    • 백엔드팀은 정책이 설계된 후 바로 데이터베이스 구조, API, 로직 등을 설계하기도 해요.
    • 프론트엔드팀은 디자인된 화면을 실제 서비스에 구현하고, API를 연결해요.
    • 인프라팀은 각 개발팀이 구현한 기능 등이 원활하게 배포되고 운영될 수 있도록 자동화된 시스템을 구축해요.
      API란? 비개발자가 알기 쉽게 설명해드립니다! 👉 API를 아주 쉽게 설명한 글이에요. API에 대해 잘 모른다면, 꼭 읽어보세요!
  6. 테스트를 위한 환경을 만들어요.
    • 기획팀은 구현한 기능이 정상적으로 작동하는지, 사용자가 사용하기에 불편함은 없는지 등을 점검하기 위한 문서를 사전에 작성해요.
    • 인프라팀은 테스트를 진행하기 위한 서버를 배포해요.
  7. 개발이 완료된 기능들을 테스트하고, 서비스를 보완해요.
    • 서버에서 직접 기능들을 사용해 보며 기능 상의 문제점과 개선점을 발견해요.
    • 발견된 문제에 따라 기능을 수정하고, 다시 테스트하는 과정을 거쳐요.
  8. 사용자에게 서비스를 배포해요.
    • 실제로 사용자가 사용하는 서버에 완성된 서비스를 공개해요.

IT 프로젝트 전과정 설명 👉 전체적인 개발 프로세스를 훑어볼 수 있는 아주 좋은 강의예요!
※ 강의에서는 다른 회사에서 프로젝트를 제안 받아 진행하는 회사의 개발 프로세스를 설명하고 있어요.
따라서 ‘프로젝트 진행 전반 계획’ 단계부터 집중해서 들으면 좋아요!


개발 서버와 프로덕션 서버의 분리

앞선 웹 개발 프로세스에서, ‘개발이 완료된 기능들을 테스트’하는 과정이 있음을 배웠어요.

하지만 실제 사용자들이 있는 사이트에서 테스트 전 기능을 바로 배포하고, 그 사이트에서 테스트를 한다면 어떻게 될까요? 아마 사용자들은 당황스러워하고 서비스 이용에 큰 불편을 느끼며 서비스를 이탈하게 될 거예요 😮‍💨

이를 위해, 웹 개발 프로젝트를 진행할 때에는 실제 사용자들이 이용하고 있는 사이트와 그 사이트에 기능을 배포하기 전 테스트하는 사이트를 분리해요. 이때, 전자를 ‘프로덕션 서버’, 후자를 ‘개발 서버’라고 말해요.

개발 서버는 목적에 따라 여러 개로 분리되고 각 프로젝트와 조직마다 다르게 사용될 수 있어요. 여기에서는 코드당이 사용하고 있는 개발 서버들을 알아볼게요.

  1. 로컬 서버 (Local Server)
    • 개발을 위해, 각 개발자마다 설치된 서버 환경이에요.
  2. 스테이징 서버 (Staging Server)
    • 각 개발자들이 만든 기능을 한 곳에 합칠 수 있도록 운영되는 서버 환경이에요.
    • 배포 전, 테스트를 할 때 주로 사용해요.
  3. 프로덕션 서버 (Production Server)
    • 실제 사용자들이 이용하는 서버예요. ‘운영 서버’라고도 말해요.
    • 사용자들의 정보가 담겨있기 때문에, 데이터베이스 관리 등 운영에 각별히 주의해야 해요!

지금은 운영 서버가 아닌, 스테이지 서버에서 테스트를 해야 한다는 것만 알고 있어도 괜찮아요 😁

개발환경에 대하여 👉 더 많은 서버 환경이 궁금할 때 읽어보세요!


✏️ 과제 안내

2주차에는 스테이지 서버에서 코드당을 사용해 보고, 리뷰해 보는 시간을 가져 보아요 😎

(저번 주와 마찬가지로, 사이트에 있는 문제의 정답을 맞추는 것보다 사용자의 행동 흐름사용성에 집중해 주세요!)

학생, 교수, 대회 출제자 등의 여러 사용자의 측면에서 코드당을 경험해 보고, 아래와 같은 내용을 포함해서 리뷰해 보면 좋아요 😀

  • 서비스의 목표
  • 서비스가 해결하고자 하는 문제
  • 문제를 해결하기 위한 핵심 기능 (사용자의 특징 별로 나누어서 작성해도 좋아요!)
  • 편리하다고 느꼈던 경험
  • 불편하다고 느꼈던 경험

스테이지 서버는 실제 운영 서버가 아니기 때문에, 마음껏 강의나 대회, 문제를 새로 만들거나 풀어봐도 괜찮아요!
스테이지 서버를 사용하기 위한 사이트 주소, ID, PW는 1주차 스터디가 끝난 후 스터디 단톡방에 공유할 예정이에요. 외부에 유출되지 않도록 주의해 주세요! ⚠️