본문 바로가기
ZB 백엔드 스쿨/블로그 과제

프론트와 백엔드 차이 - 백엔드 개발자가 되고 싶은 이유

by son_i 2023. 7. 18.
728x90

- 프론트 : 버튼, 체크박스, 그래픽, 문자 메시지와 같이 사용자에게 보이는 시각적 요소. 사용자는 이러한 시각적 요소를 통해 애플리케이션과 상호 작용 할 수 있다. 사용자가 직접 상호작용하는 웹 서비스의 인터페이스를 구축하는 분야. HTML, CSS, JavaScript 등의 기술을 활용하여 웹페이지를 실제로 구현. 이를 통해 사용자가 애플리케이션을 사용할 때 시각적으로 보기 좋은 UI를 만들어주며, 사용자 경험을 향상시킨다. 주로 웹 브라우저에서 실행되며, 브라우저에 표시되는 모든 것을 다룬다.

 

  - 필요 역량 

  • 사용자 인터페이스(UI) 및 사용자 경험(UX)을 디자인하고 개발하는데 관심
  • HTML, CSS, JavaScript 등의 웹 프론트엔드 기술에 대한 이해와 능력
  • React, Vue, Angular 등의 프론트엔드 프레임워크에 대한 경험과 지식
  • 기획자, 디자이너, 백엔드 개발 등 다양한 팀원과 협업하면서 웹 서비스를 개발하기 때문에 프로젝트 관리와 협업 능력

- 언어

 HTML, CSS, JavaScript

  1. HTML : 웹 페이지를 만들기 위한 마크업 언어, 웹 페이지의 구조와 콘텐츠 정의. HTML요소를 사용하여 텍스트, 이미지, 비디오 등의 콘텐츠를 삽입하고 웹 페이지의 레이아웃을 조정할 수 있다.

  2. CSS : HTML로 작성된 웹 페이지의 스타일과 레이아웃을 꾸미는 스타일 시트 언어. HTML 요소의 색상, 크기, 배치 등을 조절하여 웹 페이지를 디자인할 수 있다.

  3. JavaScript : JavaScript는 웹 페이지에 동적인 기능을 추가하기 위한 프로그래밍 언어. HTML과 CSS로는 구현하기 어려운 인터랙티브한 요소를 만들 수 있음. ex) 웹 페이지에서 버튼 클릭하면 팝업창 열리게 하기, 페이지 자동 스크롤


- 백엔드 :  애플리케이션을 작동하는 데이터 및 인프라. 사용자의 애플리케이션 데이터를 저장하고 처리한다. 사용자가 직접 볼 수 없는 웹 서비스의 서버 측 로직을 개발하는 분야. 백엔드 개발자는 데이터베이스와 상호작용하고, 서버에서 실행되는 코드를 작성. 백엔드 개발자가 개발한 서버 측 코드는 API를 통해 프론트엔드 개발자가 작성한 클라이언트 측 코드와 상호작용. 백엔드 개발자는 시스템 보안, 서버 구성, 성능 최적화, 데이터베이스 설계 등 다양한 업무를 수행.

 

  - 필요 역량

  • 서버와 데이터베이스를 다루는데 관심.
  • Python, Java, JavaScript, Kotlin 등의 백엔드 기술에 대한 이해와 능력.
  • 대규모 데이터 처리와 보안, 웹 서버 관리 등에 대한 이해와 경험.
  • Django, Flask, Spring 등의 백엔드 프레임워크에 대한 경험과 지식필요.

- 언어

Java, Python, Kotlin, PHP, Ruby, JavaScript

1. Java : 기업용 소프트웨어 개발에서 가장 많이 사용되는 언어. Java는 안정성과 보안성이 높고, 대규모 시스템을 다루기 적합. 오픈소스로 제공되는 프레임 워크인 Spring을 사용하면 개발 생산성 높일 수 있음.

2. Python : 다양한 분야에서 사용되는 범용 프로그래밍 언어. 백엔드 개발에도 많이 사용됨.

 간결하면서 가독성이 높은 문법으로 빠르게 배우기 쉽고 다양한 라이브러리와 프레임워크 지원.

3. JacaScript : 프론트엔드 개발에서 많이 사용되지만 백엔드 개발에서도 사용가능.

Node.js를 사용하면 JavaScript로 백엔드 개발이 가능하고 서버 측 렌더링, 웹 소켓, 실시간 데이터 처리 등 다양한 기능을 구현할 수 있다.

4. PHP : 대표적인 웹 개발 언어 중 하나로 많은 웹,애플리케이션에서 사용. 

WordPress, Drupal, Magento 등의 대표적인 CMS나 프레임워크가 PHP로 개발됨.

5. Ruby : Rails프레임 워크를 이용한 웹 개발에서 많이 사용되는 언어.

문법이 간결하고 직관적이며, 코드의 가독성이 높아 개발 생산성 높이기 가능

6. Kotlin : Java와 100% 상호 호환 가능. Java와 비슷한 문법을 가지고 있어 배우기 쉬운 언어.

Java보다 간결하고 안전한 코드 작성을 위한 여러 기능 제공.

 


내가 백엔드 개발자가 되고싶은 이유는 일단 오기에서 비롯한 것 같다. 학과에서 콘솔에만 결과를 띄우는 C언어 프로젝트 이후로 했던게 Node.js를 이용한 웹 서버 프로젝트였다. 실생활에서 나도 많이 이용하는 웹 서버를 내가 만든다니 ! 너무 신선한 충격이었고 내가 짜는 코드로 사용자에게 정보를 받아와 데이터베이스에 저장하는 것까지 너무 흥미로웠다. 다만 그때의 프로젝트는 원래 만들어져있는 코드를 가져와서 우리 팀만의 기능만 간단히 추가해보는 것이었어서 개발 능력은 많이 키우지 못했다. 

그 후 졸업작품 캡스톤 디자인 프로젝트로 스프링부트를 이용한 웹 개발을 했었는데 나는 팀에 제일 늦게 들어왔어서 이미 상당수 진행되고 있던 프로젝트에서 기초 지식을 공부할 시간이 없었다. 정보처리기사 자격증 따는 것 까지 겹쳐서 정말 프로젝트에는 신경을 쓰지 못 한 것 같다. 그래도 노력을 많이 했는데 팀에서 나는 소위 버스타는 팀원이었다. 내가 조금 공부할만치면 다른 팀원들은 이미 뚝딱뚝딱 만들어있고 나한테 업무를 맡기지 않았다. 나같아도 그랬을 것 같다. 시간은 한정되어있고 개발할 기능은 산더미인데 나한테 맡기면 몇 날 며칠이 걸려서 겨우 해낼까 말깐데 자기들끼리 뚝딱뚝딱하면 금방 만들어내니까... 어디서부터 공부해야될지도 모르겠었고 해도 내가 할 수 있을까 ? 라는 생각이 자꾸만 들었다. 프로젝트 회의 때도 나는 할 말이 없었다. 자존감이 정말 많이 떨어졌고 그 당시에는 우울증까지 왔었던 것 같다. 학교가는 길에 교통사고 날 뻔한 적이 있었는데 차라리 여기서 사고가나서 입원하면 내가 못하는 핑계라도 생기지 않을까 .. 했다. 이제껏 프로젝트에서 팀장으로서 주도만 해왔던 나에게는 프로젝트의 완성과 별개로 실패했던 프로젝트라고 단정지을 수 있다. 내가 프로젝트가 돌아가는 상황을 모르는 것, 전과정에 내가 관여하지 않는 것. 이것은 내 프로젝트가 아니며 그래서 웹 개발자로 취업을 희망하고자 포트폴리오를 만들어 볼 때 저 프로젝트는 넣을 수 없었다. 

오기가 생겼다. 나는 못 하는 사람이 아닌데 제대로 공부하고 배우지 못 해서 그런 거라고 생각했다. 

그래서 프로젝트가 끝나고 웹개발 단기특강을 들어봤는데 이렇게 기초부터 배우니 웹의 구조가 이해가 갔다. 하지만 기간이 너무 짧아서 모든 것을 다 배우기에 무리였고 이클립스로만 진행했던 실습이라 스프링을 배우고 싶었다.

그렇게 제로베이스 백엔드 부트캠프에 들어오게 되었고 기초부터 제대로 배울 생각에 너무 기대된다.

끝까지 제대로 배우면서 완주해서 내가 모든 과정에 관여하는 웹개발자가 되고싶다.