About Me/기록

프론트엔드와 백엔드 차이(백엔드 개발자가 될래!! why?)

블로그 주인장 2023. 8. 8.

[ 목차 ]

     


    📢 프론트엔드?

    • "우리 눈에 보이는 영역을 개발하는 일"
    • API를 통하여 데이터를 가공해서 사용자에게 화면에 보여주거나, 입력받은 데이터를 가공하여 서버에 전달하는 로직을 작성합니다.
    • 웹 및 모바일 솔루션의 사용자 인터페이스(UI)와 사용자 경험(UX)을 만드는 데 초점을 맞추고 있다.

    🚦 프론트엔드에서 사용하는 언어(feat. 나무위키)

    📌 HTML

    • 간단하게 "뼈대" 이다.
    • 하이퍼텍스트와 마크업 언어로 구성
    • 하이퍼텍스트 : 페이지들 사이의 링크를 정의
    • 마크업 언어 : 웹페이지의 구조를 정의

    📌 CSS

    • 간단하게 "꾸미기"이다.
    • 종속 스타일 시트(Cascading Style Sheets)의 약자
    • 개발자가 웹페이지에서 다양한 스타일을 적용할 수 있게 함으로써, 프로세스를 단순하게 만들어주는 디자인 언어
    • HTML보다 독립적으로 작동해서 각 웹페이지들을 보완한다.

    📌 JavaScript

    • 브라우저가 알아들을 수 있는 언어이다.
    • 객체기반의 스크립트 프로그래밍 언어이다.
    • 동적이며 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어이다.

    📢 백엔드?

    • "눈에 보이지 않는 뒷단을 개발하는 일"
    • 프론트엔드에서 명령을 받아서 서버에서 수행하는 프로그램이다. 웹사이트의 경우 보통 REST API 형태로 제공되며, 서버에서 직접 DB 작업 등을 수행한다.
    • 웹사이트나 웹 애플리케이션 또는 모바일 솔루션의 프로세스와 관련된 서버측(server-side)과 데이터베이스를 관리

    🚦 백엔드에서 사용하는 언어(feat. 나무위키)

    📌 Java

    • 객체지향 프로그래밍 언어인 자바의 가장 큰 특징은 플랫폼 종속성이 낮다는 것이다. 
    • 운영체제에 Java Virtual Machine(JVM)을 설치하면 Java 기반 프로그램은 어떤 환경에서도 완벽하게 똑같이 동작한다.
    • Java는 특정 플랫폼에 의존하지 않는 독립성을 갖추고 있다.

    📌 C++

    • C++은 C언어의 문법과 기능을 모두 사용할 수 있는 C언어 기반 프로그래밍 언어이다.
    • 객체지향과 일반화 프로그래밍을 사실상 거의 주된 패턴으로 사용하기 때문에 객체지향 프로그래밍 언어라고 알려져 있기도 하지만 객체지향은 물론 절차지향도 가능한 멀티 패러다임 언어이다.

    📌 Python

    • 딥러닝, 데이터 사이언스, 인공지능 분야에서 많이 사용된다.
    • 접근성이 좋고 문법이 통일되어 있어 어떤 결과물(프로그램)에 대한 피드백이 활발하게 이루어진다. 
    • 현업에서도 사용하기 쉽고 입문하기도 쉬워 교육과 실무 현장 모두에서 인기 있는 언어로 볼 수 있다.

    📌 Node.js

    • 크로스 플랫폼의 오픈소스 런타임(run time) 환경으로써, 브라우저의 외부에서 자바스크립트 코드를 실행할 수 있게 해 준다. 
    • Node.js로 인해 자바스크립트가 웹 브라우저를 벗어나 모바일이나 웹 애플리케이션용 API와 같은 백엔드 서비스 개발에도 사용되는 범용 프로그래밍 언어가 될 수 있었다.
    • 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 별도의 소프트웨어 없이 동작하는 것이 가능하다. 
    • 확장성이 뛰어나고 반응속도가 빠르며 많은 양의 요청도 처리 가능하기에 웹서버의 동작을 더욱 효과적으로 통제할 수 있다. 
    • 하지만 언어가 아니라 소프트웨어 플랫폼이어서 그 자체로는 아무것도 하지 못하고 서버를 직접 구현해야 한다는 특징이 있다.

    📌 PHP

    • 개발을 위해서 고안된 서버 측 스크립트 언어이자 수많은 웹 시스템의 기반이 되는 언어이다.
    • 브라우저에서 요청한 웹 페이지 즉 서버에 있는 데이터가 사용자와 상호작용하는 웹 어플리케이션으로 진화하여 브라우저로 넘어가도록 처리하는 데 필요하다.
    • HTML을 프로그래밍적으로 생성해 주고, 데이터베이스와 상호작용 하면서 데이터를 저장하고, 표현하는 서버와 브라우저 간의 다리 역할을 한다고 볼 수도 있다.

    📢 프론트엔드와 백엔드의 차이

    🚦 프론트엔드의 장점

    • 언어 선택에 관한 고민이 없다는 것이다.(JavaScipt 사용, 프레임워크 사용 시에 다른 언어를 배우기도 하겠지만, 시작할 때는 언어가 정해져있다.)
    • 시각적으로 보이는 부분이기 때문에 문제가 발생하였을 때 즉각 피드백을 적용하고, 결과를 눈으로 바로 확인할 수 있다.

    🚦 백엔드의 장점

    • 개발 환경이 안정적이어서 지식을 배워두면 오래 개발할 수 있다.
    • 언어와 프레임워크가 다양하기 때문에 선택권이 많다.

    🚦 프론트엔드와 백엔드 한 줄 요약

    • 프론트엔드 개발자 : 민감한 기술 트렌드에 맞춰 빠르게 적응하고 변화해야한다.
    • 백엔드 개발자 : 기술의 폭이 넓기 때문에 꾸준히 공부를 해야한다.

    📢 나는 개발자가 될거야!!

    🚦 근데 왜 개발자를 하려고해?

    중학생 때까지만 해도 난, 내가 전문직으로 일 할 거라고 생각한 적이 한 번도 없었다. 그냥 일반적인 루트를 타면서 
    '인문계 고등학교 -> 대학교 -> 사무직 or 공무원' 이라고 생각했다. 근데 중3 때 자의적, 타의적으로 "마이스터고등학교"라는 입학을 하면서부터 전문직이 되겠구나라고 생각을 했다. 전기/전자를 주로 배우면서 고3 때 첫 직장에 입사를 했고, 설비 운영(cs)를 하면서 C언어와 첫 만남을 했다. 원래는 H/W 파트에서 일하려고 했으나, 그 때 당시 일이 많았기에, S/W파트의 CS 업무를 진행하면서 컴퓨터 언어에 관심을 갖게 되었다. (자세한 건 About Me 카테고리에 적어놨으니 봐주세요~).
    Visual C++ , MFC 기반으로 프로그램 개발 및 제어를 했고, 기회가 되어서 Machine Vision도 하면서 열심히 일을 했다.
    최근 들어 일에 대한 회의감도 들었고, 나도 프로그램 개발을 하긴 하는데 어디 나가서 내 직업을 소개할 때 "설비 SW 엔지니어" 라고 밖에 말을 못하기 때문에 "개발자" 라는 걸 하고 싶은 마음이 커져갔다.
    지금이 아니면 도전을 할 수 없다고 생각을 했기에 인생의 터닝포인트라고 생각하고 "개발자"가 되려고 공부중이다.
     

    🚦 그 중에서 넌 뭘 하고 싶은데?

    📌 너가 했던 일을 "개발"에 비유한다면?

    위에서 말했다시피, 설비 S/W 제어를 했었는데, 설비도 제어하는 게 3가지로 분류가 될 수 있다고 본다.
    설비에 맞는 프로그램 설계(프로그램 UI 및 시퀀스 제어), 장비에 들어가는 카메라를 이용하는 머신 비전, 상위 서버와 통신, 이렇게 나뉜다고 본다. 내가 최근까지 했던 건 설비에 맞는 프로그램 설계 및 머신 비전 관련 일을 진행해왔다.
    비전 알고리즘을 구현하는 게 카메라에서 이미지를 하나 촬상하면 해당 이미지로 User가 원하는 이미지처리를 하고, 기존 레퍼런스 대비값을 추출해서 해당 값을 가지고, Axis를 움직여서 보정하는 것이다.
    웹개발인 프론트엔드와 백엔드로 예를 들어본다면, 큰 틀에서는 나는 "프론트엔드" 일을 해왔다고 생각한다.
    눈에 보이는 UI나 이미지를 처리 및 제어를 해야했고, 에러나 예외 처리 시에 디버깅을 주로 해왔기 때문이다.
     

    📌 그래서 너가 정한 진로는?

    "나는 백엔드 개발자가 되고 싶어~!!"
    나는 통신에 관해서 진짜 1도 모른다. 한 번 안정화가 되면 솔직하게 다른 사람이 프로그램을 따로 만질 일은 거의 없다.
    그러다보니, 다른 업무를 주로 해왔어서, 해당 업무에 대한 낯설음과 호기심이 있다. 에러가 발생하면 눈에 보이지 않는 에러이기 때문에 에러 부분을 찾으려면 Log를 남기지 않는 이상 중단점을 잡아가면서 디버깅을 해야한다는 어려움이 있다.
    근데 회사에서도 서버 통신 프로그램을 제대로 이해하면서 수정이나 고칠 수 있는 사람은 진짜 손에 꼽을 정도로 적었다. 그래서 안 될 때마다, 전화하고 메일 돌리고, 빠른 수습이 안 되다보니, 업무가 딜레이 된 적이 많았다.
    그때마다 "내가 저걸 만질 수 있는 실력이라면 빨리 끝냈을텐데" 하는 아쉬움을 갖고 있었다. 그러다 보니, 서버나 클라이언트 관련 업무를 진행해보고 싶다고 생각을 했고, 서버 통신 관련 프로그램 Base를 짜고 싶다는 생각이 마음 한 구석에 자리 잡고 있었다. 그래서 기회가 된다면 "백엔드" 쪽으로 업무를 진행하고 싶었다.
    그러다, 커리어 전환을 하겠다고 맘을 먹었고, 마침 기회가 닿아서 백엔드 개발자로 내 진로를 정하게 되었다.


    📢 마지막으로

    제대로 "백엔드 개발자"로 진로를 정한 게 이제 2주차밖에 안 되었다.
    아직 맛보기밖에 안 한 상태라서 진정으로 내가 얼마나 성장할 지는 진짜 모르겠다.
     
    근데, 계속 공부하다보니
    흥미도 생기고, 디버깅 할 때 에러가 날 때 하나씩 풀어가서 해결한다는 게 엄청 짜릿하다🤔
     
    하나에 미치면 그것만 죽어라 파서,
    남들보다 빨리 끝내서 내 니즈를 충족하곤 했는데
    이건, 기술의 폭이 엄청 넓기 때문에, 공부할 게 많다.
    그래서 이게 나중엔 스트레스 될 순 있겠지만, 심심할 겨를이 없다고 생각하고 즐겁게 살고 싶다~😄
     


     

    반응형

    'About Me > 기록' 카테고리의 다른 글

    Road To BackEnd Study Plan  (0) 2023.08.24
    백엔드 개발자는 이제 제껍니다 (feat. My Wannabe)  (0) 2023.08.16
    첫 글..(다시 걸음마부터)  (0) 2023.01.31

    댓글