일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ArrayList
- 자료형
- node.js
- 개발자
- 예외 처리
- 변수
- 다형성
- try-catch
- MPA
- 인터페이스
- 자바
- 백엔드
- 상속
- 초보개발자
- throws
- 새벽공부
- 파이팅
- 인스턴스
- 코딩
- 바이트 단위 스트림
- 졸리다
- 문자 단위 스트림
- exception
- 보조 스트림
- Java
- 메서드
- 배열
- FileInputStream
- SSR
- 코린이
- Today
- Total
SHUSTORY
오늘부터 개발자_김병욱 본문
프론트엔드 개발자, 백엔드 개발자가 어떤 언어를 사용하고 어떤 개발을 하는지 그저 막막하기만 했던 내게 '오늘부터 개발자_김병욱' 책은 비전공자를 위한 개발자 취업 입문 개론이라고 하지만 전공자인 나에게도 큰 도움이 되었다. 개발자가 되고 싶은 나에게 이런저런 궁금증을 해소해 주었으며 조금이나마 앞길이 트이는 듯한 느낌을 받았다. 아직도 어떤 공부를 어떻게 해야 할지 잘 모르겠으나 일단 이 책을 읽고 나는 백엔드 개발자로서 개발자의 첫 챕터를 써 내려가고 싶다고 생각했다. 어떤 분야로 시작해도 이쪽저쪽으로 넘어가는 경우가 허다한 듯 하니 뭘 하면 좋을까 고민하는 것보다는 무엇이라도 시작하고 직접 겪어보는 것이 내 길을 만들어가는 데 더욱 도움이 될 것 같다.
다음은 위에서 소개한 책을 읽으며 백엔드 개발자와 관련하여 개인적으로 기록해두고 싶은 내용을 간단히 요약해 정리한 것이다.
백엔드 개발자란?
우리가 이용하는 앱/웹 내에서 일어날 수 있는 다양한 케이스를 고려하여 로직을 설계하고, 서버에서 일어나는 일들을 처리한다. 프론트엔드에서 보내주는 자료들을 처리하는 로직을 개발함과 동시에 어떤 데이터들을 저장할지 등의 데이터베이스 설계 등 간단히 정리하자면 기존 서비스에 대한 유지보수와 새로운 기능 추가 및 관리자 페이지 등을 백엔드 개발자가 담당한다고 볼 수 있다.
백엔드 개발자가 사용하는 언어로는 Python과 Java를 살펴볼 수 있는데, Python은 다양한 케이스를 고려하고 대응해야 하는 서버 특성상 어떤 상황에서도 간결하게 프로그래밍할 수 있기 때문에 효율적인 언어이다. 또한 대규모 데이터를 다루기에도 편리하며, 최근 개발자들의 많은 관심을 가지고 있는 머신러닝과 딥러닝의 기본이 되는 언어이기도 하다.
* 프레임워크란?
간단히 말해 개발언어를 통해 사이트를 만들고자 할 때 우리가 상상하는 서비스를 제대로 개발하기 위해 개발언어에 맞는 프레임워크를 학습해야 한다. 우리가 서버를 개발한다면 많은 시간과 노력을 들여 DB에 연결하는 과정을 거쳐야 하는 반면, 프레임워크를 이용하면 코드 몇 줄 만으로 완성이 된다.
Python의 프레임워크 - Django / Flask
Java의 프레임워크 - Spring
Java를 이용하면 다양한 프로그램을 개발할 수 있으며 주로 서버 또는 안드로이드 앱과 게임을 만드는 데 이용된다. Python보다 속도가 빨라 대규모 서비스에 적합하기에 규모가 큰 서비스의 대부분은 Java를 사용하고 있으며, 대부분의 SI업체에서도 주로 사용된다.
프론트엔드 개발자란?
우리가 이용하는 앱/웹의 앞부분을 만드는 개발자로, 눈에 보이는 내용들을 하나씩 만들고 디자인을 입혀준다. 이러한 과정들을 통해 웹브라우저에서 화면이 보일 수 있도록 만들어야 하는데, 이러한 페이지는 HTML, CSS를 통해 만든다.
웹 프론트엔드 개발자는 HTML과 CSS를 이용하는데, HTML은 태그 등을 이용해 웹페이지의 구조를 기술하는 마크업 언어이며, 컴퓨터에게 명령 또는 연산을 시키는 동작을 할 수는 없기에 프로그래밍 언어로 취급하지는 않는다.
태그를 이용해 제목과 소제목, 본문의 시작점과 끝점을 알려주어 웹브라우저에서 해당 부분에 맞춰 화면에 표시할 수 있도록 약속한 언어로, 웹사이트의 앞부분은 HTML을 이용해 만들어야 하기 때문에 웹페이지를 만들고자 한다면 필수적으로 익혀야 한다.
CSS는 HTML을 이용해 기본적인 프론트엔드의 뼈대를 잡은 후 디자인을 입혀주는 언어이다.
JavaScript는 HTML과 CSS로 앞 화면을 만든 후 서비스를 제공하기 위해 백엔드와 통신을 할 때 사용하는 언어이다. JavaScript를 통해 백엔드에 관련 요청을 보내고 그것을 바탕으로 웹사이트가 여러 액션들을 할 수 있게 해 준다.
앱 프론트엔드 개발자는 각 운영체제마다 사용되는 언어가 다른데, 최근에는 안드로이드와 IOS에서 한 번에 개발 가능한 기술도 나오고 있다. Dart 언어를 기반으로 한 flutter 프레임워크, JavaScript를 기반으로 한 React native 프레임워크를 이용하면 안드로이드와 IOS 앱의 프론트엔드를 동시에 만들 수 있다.
안드로이드 - 코틀린, Java
IOS - 스위프트, 오브젝티브-C
JavaScript의 프레임워크 - React / Vue / React native
프론트엔드와 백엔드가 통신하는 방법
우리가 웹사이트 주소에서 쓰고 있는 http는 클라이언트와 서버 사이에서 데이터를 교환하기 위해 사용하는 통신규칙을 말한다. 보통 클라이언트(프론트엔드)가 요청을 보내면 서버에서 응답을 하는 형태로 이루어진다.
API
프론트엔드와 백엔드가 통신을 하기 위해 약속해놓은 인터페이스이다.
예를 들어, 통신을 위해 요청하고자 다음과 같이 프론트엔드 개발자와 백엔드 개발자가 약속처럼 정하는 것이다.
- 메인페이지에 대한 요청은 "api/main/"
- 배송에 관한 요청은 "api/delivery/"
- 주문에 관한 요청은 "api/order/"
Rest API
API 통신의 효율을 높이기 위한 약속으로, API에도 요청을 어떻게 보내야 할지에 대해 사전에 약속이 필요하다. 프론트엔드와 서버 간의 통신 효율성을 높이기 위해 어떻게 요청하고, 어떻게 전달할지를 정해 놓은 규약이다.
일반적으로 웹/앱 페이지에서는 다음과 같은 네 가지로 압축된다. ( 보여줘 / 입력해 줘 / 수정해줘 / 삭제해줘 )
여기서 나오는 GET, POST 등이 개발자들이 자주 이야기 하는 'GET 요청', 'POST 요청'이다.
- 주문을 보여 줘 → method : GET api : api/order/
- 주문을 입력해줘 → method : POST api : api/order/
- 주문을 수정해 줘 → method : PUT api : api/order/
- 주문을 삭제해 줘 → method : DELETE api : api/order/
JSON
key와 value 값으로 이루어졌으며, 위 요청에 대한 결괏값을 주고받는 형태이다.
라이브러리
액세서리 개념으로, 프레임워크에서 기본적으로 제공하는 디자인이 마음에 들지 않을 경우 다른 개발자들이 만들어놓은 라이브러리를 사용할 수 있다.
달력, 시계, 드래그앤드롭, 지도, 버튼 등 우리가 사이트 이용 시 마주하는 대부분의 것들은 라이브러리로 만들어져 있다.
웹
웹은 HTML과 CSS, JavaScript로 구성된다.
HTML로 만든 코드가 있다고 할 때, 이를 해석하여 화면에 보여주기 위해 웹브라우저가 필요하다.
우리가 브라우저에 접속하여 특정 URL을 치거나 검색하여 웹사이트에 접속하면 웹브라우저에서는 그 사이트의 서버로 요청을 보내 해당 사이트의 HTML, CSS, JavaScript를 불러와 해석해 우리가 볼 수 있는 화면으로 보여준다. 이처럼 웹브라우저는 사용자와 코드 사이의 중간 역할을 해 준다.
개발자들이 작성한 HTML, CSS, JavaScript를 다양한 웹브라우저들이 제멋대로 해석해 버릴 경우 개발자의 의도와 달리 화면에 다르게 보일 수 있어 이를 방지하기 위해 웹표준이라는 것을 정의했다. HTML/CSS는 W3C, JavaScript는 ECMA라는 표준이 정해져 있는데, 익스플로러는 1990년대 당시 브라우저 시장을 독점하고 있어 웹표준을 지키지 않았다. 2000년대 후반에 나온 크롬, 사파리에서는 웹표준을 지켜 웹브라우저를 개발했고, 현재는 거의 모든 유저들이 크롬과 사파리를 사용하지만 아직도 익스플로러가 사용되고 있기 때문에 개발자들이 힘들게 개발 중이다.개발자들은 이러한 이유로 익스플로러를 좋아하지 않는다고 한다. 나도 익스플로러가 싫어지는 그날까지 파이팅..
앱
OS 기반에 설치하여 사용한다. Android와 IOS는 서로 호환되지 않기 때문에 개발자는 각 OS에 맞춰 앱개발을 해야 하는데, 최근에는 한 번의 개발로 Android와 IOS 모두 사용할 수 있는 기술들이 등장하고 있다.
개발자들이 스마트폰 앱을 개발하면 APK( IOS는 IPA )라는 설치파일을 만드는데, 개발자들은 이 파일을 구글과 애플 각 스토어에 제출하고 심사 후 문제가 없으면 승인 후 게시된다. 사용자들이 앱을 다운로드하면 이 파일이 스마트폰에 설치되어 앱 이용이 가능하다.
최근에는 앱의 틀만 가지고 내부는 웹으로 동작하는 하이브리드 앱이 각광받고 있다. 하지만 이 경우 웹으로 작동하다 보니 인터넷 되지 않는 곳에서는 이용 불가능하고, 앱에서 자연스럽게 사용하던 기능들을 자유롭게 쓸 수 없다는 제약이 있다.
웹과 앱의 차이점
웹은 공통된 브라우저를 통해 볼 수 있으므로 앱처럼 운영체제에 따라 다르게 개발할 필요가 없고, 개발이 쉬우며 앱을 따로 설치하지 않아도 돼 접근성이 높다는 장점이 있다. 반면 인터넷이 연결되어야만 접근이 가능하며, 앱보다는 사용성 최적화 측면에서 접근성이 떨어질뿐더러앱에서 사용 가능한 다양한 기능들에 제약이 있다는 단점이 있다.
'시우의 일상 🐣 > BOOK' 카테고리의 다른 글
데미안_헤르만 헤세 (0) | 2024.01.20 |
---|---|
인간실격_디자이오사무 (1) | 2023.12.13 |
작별 인사_김영하 (0) | 2023.05.20 |
구의 증명_최진영 (0) | 2023.05.09 |
눈먼 자들의 도시_주제 사라마구 (0) | 2023.05.03 |