ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DLOG] 프론트엔드, 백엔드 그게 뭔데? (feat. 앱개발) - 2
    카테고리 없음 2024. 2. 10. 16:18

    https://muunii.tistory.com/5

     

    [DLOG] 프론트엔드, 백엔드 그게 뭔데? (feat. 앱 개발) - 1

    들어가며 주변에서 어떤 일을 준비하고 있는지 물을 때 '백엔드 개발자' 라고 답변을 하면 대다수가 '그게 뭔데,,?', '무슨 차이가 있는건데?' 라는 질문을 받아본 적이 종종 있었다. 또는 개발자

    muunii.tistory.com

     

    지난번에는 프론트엔드에 대해서 알아보았으니, 바로 백엔드에 대해 알아보기 전에 다시 한번 자판기 예시를 떠올려보고 들어가자!

    • 음료들이 3열로 배치되어있고, 품절된 음료에는 빨간불이 깜빡거리며,
      상단에는 새로나온 음료에 대한 광고가 나오고 있고, 구매를 원하는 음료의 버튼을 누를 수 있다
      ▶ 프론트엔드의 영역
    • 자판기로 들어온 돈과, 선택한 음료의 금액이 얼마인지에 따라 잔돈은 얼마를 거슬러 주어야하며,
      품절된 음료는 없는지 재고를 파악하고, 만약 품절되었다면 이를 알려준다
      ▶  백엔드의 영역

     

    ✅ 백엔드란?

    웹페이지에서 사용자가 필요로 하는 정보를 저장하고 관리하며 전달하는 역할을 담당

     

    백엔드 개발자는 웹페이지를 사용하면서 필요한 비즈니스 로직을 만들기 위해 서버, 데이터베이스, API 등을 총괄하며

    웹 서비스의 전체적인 구조를 이해하고, 논리적인 사고를 통해 서버 구성, 성능 최적화, 데이터베이스 설계 등 다양한 기술을 수행한다.

     

    자판기에서 필요한 로직이라면

    1. 사용자한테 돈 받기
    2. 선택한 음료 재고가 있다면 주기 / 없다면 재고 부족하다고 알려주기
    3. 사용자한테 받은 돈에서 구매한 음료 금액을 차감해서 잔돈 주기 등

     

    일 것이고, 데이터베이스에는 다음과 같은 내용들이 기록되어야 할 것이다.

    1. 음료의 종류와 수량
    2. 사용자들에게 받은 금액들 / 수익

     

    ✅ 개발 목표

    애플리케이션의 기능을 정확하고 효율적으로 수행하는 신뢰하는 아키텍처를 만들고, 사용자 요구 사항을 충족하면서도 모든 보안 및 비용 고려 사항을 충족하는 것

     

    가장 기본적인 ‘정확한 기능 수행’ 뿐만 아니라,

    데이터를 어떻게 저장하고 관리할 것인지, 데이터 처리 시간은 어떻게 줄일 것인지, 사용자 수가 늘어났을 때에는 어떻게 대처할 것인지, 데이터에 대한 보안은 어떻게 관리할 것인지 등에 대해 끊임없이 고민하며 지속적으로 서버를 개발하고 관리해야한다.

     

    즉, 백엔드 개발자는 사용자가 수행하고자 하는 일을 문제 없이, 최적의 효율로 수행하는 것을 목표로 두어야 한다.

     

    ✅ 주요 기술 & 도구

    프론트엔드에선 각자의 디바이스에서 접근하기 때문에 동시성에 대한 문제가 없지만,

    백엔드는 수천개의 요청에 대해서 데이터를 저장/업데이트하거나 응답해야하고,

    또는 하나의 정보에 수천개의 조회가 이루어질 수 있기 때문에

    멀티스레딩, 비동기 프로그래밍을 통해 동시성 문제를 해결하거나, 캐싱을 통해서 서버의 부하를 줄이는 등의 관리가 필요하다.

     

    백엔드는 다른 다양한 언어들과 프레임워크를 프로젝트 요구에 따라 선택할 수 있다.

     

    GPT와 함께 정리해본 언어와 프레임워크 특징

    쿠팡, 당근은 Node.js를 주로 사용하는 것 같지만,
    기본적으로 대규모 IT 기업의 경우 Spring을 기본 프레임워크로 가져가고 있음

     

     

    ✅ 이런 사람들에게 잘 맞아요 (주관)

    1. 문제를 해결해나가는 것이 좋다, 돌발 상황에 대해서 스트레스를 받지 않는다.

    백엔드는 프론트엔드보다 보이지 않는 것들을 많이 고려해야한다.

    특히 서비스의 규모가 커질수록, 데이터의 양도 늘어나기 때문에 어디서 어떤 돌발 상황이 발생할지 모른다.(서버가 다운된다던지,,)

     

    따라서 대규모 서비스에 맞게 데이터를 어떻게 처리할 수 있을지 고민해야하지만, 그 결과가 바로바로 눈에 보이지는 않는다.

    차분히 문제 상황을 파악하고 지속적으로 고치고 발전, 유지시켜나가는 것이 즐겁다면 백엔드 개발자가 조금 더 잘 맞을 것 같다.

     

    2. 꾸준히 공부하는 것을 즐긴다

    지속적으로 공부해야하는 것은 모든 개발자의 해당사항이긴 하지만 (다른 직종도 비슷하겠지만,,)

    보통 서비스를 위한 코드를 처음 설계하고 나면, 코드의 유통기한이 길기 때문에

    서비스의 확장성, 유지보수, 가독성 등을 고려한 코드를 작성해야한다.

     

    따라서 서비스를 논리적으로 이해하고, 서비스가 지속적으로 확장되면서 어떻게 하면 더 대량의 데이터를 효율적으로 처리하는 방향으로 개선시킬 수 있을지를 계속 고려하며 발전시켜나가야 좋은 백엔드 개발자가 될 수 있다고 생각한다.

     

     

    백엔드 개발자에 더 관심이 있다면 이 글을 읽어봐도 좋을 것 같다

    https://d2.naver.com/news/3435170

     

     

     

    💡 앱 개발에도 프로트엔드 / 백엔드가 있을까?

    소규모 앱을 토이프로젝트로 개발하다가 든 생각이였다.

    앱애서 충분히 사용자에게 페이지를 보여주는 것 뿐만 아니라 데이터의 관리도 가능한데

    그렇다면 앱 개발자는 프론트부터 백까지 모두 수행하는 것인가? 백엔드가 필요 없는 것인가?

     

    정답은 O, X 라고 말하긴 어렵지만

    웹과 똑같다고 보아도 무방하다고 생각한다.

     

    웹에서 사용자에게 보여지던 부분을 프론트가 맡고, 비즈니스 로직 및 데이터 처리를 백이 맡아서 했다면

    앱에서는 모바일에 보여지는 화면들을 맡는 파트(=클라이언트)와 데이터를 처리하는 파트(=서버)로 나뉘어진다.

     

    다만 앱에서 서버 없이 모든걸 컨트롤 할 수는 있다 (페이지 그리기, 이동 부터 데이터 관리까지)

    그건 어디까지나 ‘앱이 모바일에서 돌아간다!’ 정도이고, 결국 사용자와 소통을 하기 위해선 서버가 필요하다.

     

    웹 = 프론트엔드 / 백엔드

    앱 = 클라이언트 / 서버

    정도의 용어 차이라고 이해하면 되고,

     

    만약 웹과 앱 모두 지원하는 서비스라고 한다면

    웹을 위한 백엔드, 앱을 위한 백엔드가 모두 존재할 수도 있지만

    하나의 서버에서 각 플랫폼이 동일한 API 를 호출하도록 하여 각자 화면에 맞도록 보여주는 형태로 발전했다고 이해하면 될 것 같다.

     

    ✏️ 이와 관련해서 추가로 알면 좋을 내용_ 네이티브 앱 / 모바일 웹 앱 / 하이브리드 앱

     

Designed by Tistory.