개발 환경 이해

김무성·2022년 8월 17일
0

Planning

목록 보기
2/3
post-thumbnail

개발 환경 이해

  • 개발 환경에 대해 이해하려면 프론트 엔드, 백엔드, 어드민, DB 크게 4가지를 이해해야 함

  • 모든 서비스에는 최소한 세가지 단위 존재

    • 사용자에게 노출되는 서비스 화면 : 프론트 엔드 (Front end)

    • 각각의 화면에 들어가는 데이터와, 사용자 입력 정보들 : 백엔드 (Back end)

    • 그리고 이 모든 것을 실시간으로 저장, 기록하는 창고 (Data base / DB)

프론트엔드

  • 사용자에게 노출되는 서비스화면

  • 쉽게 말해 웹이나 앱의 화면 단위를 다루는 곳

    • 어떤 컨텐츠가 화면에 들어가고, 그게 어디에 들어가는지 또 어떻게 보일지를 다룸

    • 시각적인 지점이 영향을 많이 받기 때문에 미적 감각이 있고 개발 언어도 잘 아는 사람들이 이 역할을 맡음

  • 프론트엔드 개발자: 웹서비스와 앱 서비스, 다양한 디바이스에 맞는 화면을 일관성있게 만들어내며 시각적으로 아름다운 배치와 편의성 모든 것을 한꺼번에 다루는 사람

    • 웹사이트나, 앱 서비스에 들어가는 UI 컴포넌트를 코드로 작성

    • 작성한 코드를 다른 화면에서도 사용할 수 있도록 블럭, 단위화하는 과정을 모아 디자인 시스템을 만들거나, 자체적인 가이드 라인을 만듬

    • 서버에 필요한 정보를 요청하는 기능을 만듬

  • 주로 사용하는 언어: HTML, CSS, Javascript 등

백엔드

  • 사용자가 볼 수 없는 영역

  • 사용자가 입력한 정보와 각 화면에 들어가는 정보의 이동

  • 데이터가 얼마나 정확한지 데이터 전달 속도가 얼마나 빠른지가 중요

  • 백엔드는 데이터의 이동을 다룸

  • 백엔드 개발자: 사용자가 입력하거나 정리된 정보를 보내고 차곡차곡 저장하는 ‘자동화 시스템’을 만들어 실제 서비스가 소수의 인원으로 원활하게 동작할 수 있게 만드는 사람

    • 단순한 페이지 이동에서부터 아이템 만들기, 수정, 삭제 등 서비스 안에 들어있는 모든 기능은 동작 과정에서 여러 데이터를 주고받음

    • 서비스를 이용하기 위해 우리가 휴대폰 인증을 받듯 각각의 기능에서도 데이터가 출발한 곳과 가려는 목적지를 확인하는 토큰 (인증서)을 발급해줌

    • 백엔드 개발자는 이런 시스템을 설계하고, 만드는 작업을 하며 서비스 완성 이후에는 수만명의 사람들이 서비스를 사용해도 서버가 멈추지 않도록 유지보수를 맡는 역할을 함

  • 주로 사용하는 언어: Java, C#, Javascript

DB

  • 서비스의 각 페이지에 들어가는 모든 정보를 담고있는 창고 역할

  • 아주 작은 정보단위들을 모두 담을 수 있고 이 내용을 합쳐 상황마다 다른 정보 꾸러미를 만들어내기도 함

  • 데이터베이스(DB)는 서비스의 핵심임

    • 모든 서비스에는 사용자의 ID정보, 구매기록, 활동내용, 문의사항 등 다양한 데이터값들이 들어있으며 모두 데이터베이스 안에 저장 됨

    • 서비스 화면을 보여주기 위한 데이터 또한 DB 안에 저장 됨

    • 데이터베이스는 실제 사용자들의 기록이기 때문에 내용이 손상되거나 없어진 경우 서비스를 종료하게되는 상황에 처할 수도 있음

관리자(Admin)

  • 사용자의 한가지 타입으로 서비스를 운영하고 유지 보수, 관리하기 위한 사람

  • 일반적으로 서비스 운영자나 관리자도 개발자의 한 종류라고 생각하지만 실제로 관리자는 큰 범주로 봤을 때, 여러 사용자 타입들 중 하나로 구분할 수 있음

Example - 작은 앱 서비스 하나가 있다고 가정

  • 서비스를 만든 개발자와 서비스를 운영하면서 일반 사용자들과 소통하는 관리자 계정이 존재

  • 관리자는 사용자들이 우리 서비스를 잘 쓰고있는지 확인하는 ‘관리자 사이트’에 들어감

  • 관리자 사이트는 일반 사용자에 비해 많은 서비스 정보를 보여주는 화면으로 어디까지나 서비스 운영을 위해 필요한 정보를 다룰 뿐 서비스의 데이터베이스를 다루거나 서버의 구조를 바꾸는 건 불가능함

  • 이는 개발자와 운영자의 역할이 정확히 나뉘어있다는 것을 의미

  • 규모가 작은 서비스라면 관리자가 서비스를 개발한 개발자 일수도 있으나 규모가 크고 서비스를 만든 회사와 쓰는 곳이 다르다면 상황은 많이 달라짐

  • ERP 시스템처럼 커다란 프로그램은 개발한 곳과 쓰는 곳이 서로 다름

  • 프로그램을 구매해 쓰는 회사 내에서 또 다시 관리자 계정을 만들 수 있고 이런 관리자들은 일반 회사원보다 많은 정보를 확인하고 관리할 수 있지만 실제 서비스의 데이터베이스를 변경하거나 수정할 수는 없음

  • 서비스의 규모가 커졌을 뿐 관리자는 여전히 ‘여러 사용자 타입’들 중 하나이므로 서비스의 핵심 정보인 데이터베이스에는 함부로 접근할 수 없음

개발자가 서비스를 개발 / 배포하는 과정

  • 세상에 존재하는 서비스들은 모두 비슷한 과정을 거쳐서 만들어지고 수정이 되며 그 과정을 정리하면 다음과 같음

    • 개발자가 코드를 짜고, 내용을 바꿈
    • 개별 테스트를 통해 제대로 실행되는지 체크
    • 이 내용을 개발 서버에서 테스트
    • 테스트가 성공적이라면 실제 서버에 업로드
    • 사용자들이 이걸 잘 사용하는지 체크
  • 대부분의 서비스는 이런 과정을 반복해서 진행하며 그 과정에서 데이터베이스의 구조를 수정하거나 서비스의 화면별 UI를 수정하기도 함

Reference

profile
graph data scientist

0개의 댓글