본 글은 "오늘도 개발자가 안 된다고 말했다"란 책을 읽고 기록한 포스트입니다.(+서치하며 공부한 내용)
추가 출처: https://www.inflearn.com/pages/weekly-inflearn-12
W3C(World Wide Web Consortium, 팀 버너스 리 창시)가 지정한 표준안을 지켜 웹 사이트를 제작하는 것이다. 어떤 운영체제나 웹브라우저 상에서도 비교적 동일한 디자인과 기능을 구현하는 데에 목적이 있다.
누구에게나 평등할 수 있도록 웹사이트에서 제공하는 모든 정보에 접근하고 이용할 수 있도록 보장하는 것이다. 웹 표준을 지킴으로써 장애를 가진 사람들이 웹 콘텐츠를 인지하고, 편리하게 사용할 수 있으며, 그 내용이 이해하기 쉬워야 하며, 견고성을 지녀야 웹 접근성이 있다고 보는 관점이다.
웹 페이지를 구글 등 검색 엔진이나 포털사이트의 기준에 맞춰 구성하는 작업이다. 사람들이 많이 검색할 만한 관련 키워드를 배치하고, 웹 표준을 지키며, 스팸으로 분류되지 않게끔 하는 등 웹 페이지 링크가 더 많이 노출되도록 처리한다. 온라인 마케팅의 필수 요소로도 꼽히는데, SEO가 잘 적용된 웹 페이지는 검색 시 상단에 오를 수 있기 때문.
웹 개발 방식으로 모바일 스크린 크기에 맞추어 제작하는 웹을 말한다.HTML기반으로 제작되어 단말기의 웹 브라우저를 통해 보여준다. 모바일 웹은 네이티브처럼 iOS와 안드로이드를 별도로 디자인, 개발을 하지 않아도 되는 장점이 있다. 다만 네이티브 앱처럼 단말기를 제어하는데 한계가 있으며 반응 속도가 느리다.
모바이 스토어에서 내려받아 단말기에 직접 설치하는 어플을 말한다. 단말기에 직접 설치하여 운영하는 방식으로 단말기의 고유정보, 하드웨어에 접근할 수 있으며 각종 센서를 제어하는 앱을 만들 때 유용하다. 또한 인터렉션 구현과 반응 속도가 빠른 장점이 있다.
예) 계산기, 노트 등 폰에 기본적으로 내장되어있는 앱들, 대부분의 게임
HTML기반으로 제작된 모바일 웹앱을 네이티브 앱으로 제작한 것을 하이브리드 앱이라고 한다. 네이티브 앱과 모바일 앱의 특성이 공존하는 앱 형태이다.
예) 인스타그램, Gmail, 금융기관 앱 등
웹 페이지가 브라우저에 나타나려면 서버가 필요하다.
서버는 인터넷과 연결된 컴퓨터를 말하며, 호스팅은 서버를 임대해주는 서비스를 말한다.
서버를 직접 관리하려면 24시간 내내 끊기지 않도록 유지해야 하고 안정적인 인터넷과 보안 시스템을 갖추어야 한다.
대체로 큰 규모의 회사는 직접 서버를 관리하지만, 소규모 회사나 개인이 운영하는 경우 유지 비용이 많이 드니 전문 웹 포스팅 회사(ex. 카페24)에서 운영하는 서버를 사용하기도 한다.
웹 사이트에 사용자가 방문하면 서버에서 이미지, 동영상, 페이지 등 다양한 데이터를 불러오는데, 이때 사용되는 서버 데이터 전송량을 트래픽이라고 말한다.(서버를 통해 전송되는 데이터의 양) 웹 포스팅을 사용하여 서버를 운영할 경우 서버가 수용할 수 있는 트래픽 용량이 있는데, 접속자 수에 비해 트래픽 용량이 적다면 서버가 다운될 수 있다. 트래픽 용량 관리를 지속적으로 해주어야한다.
컴퓨터, 서버, 네트워크 장비가 통신할 수 있도록 공용화된 언어를 프로토콜이라 한다.(원격 통신)
대표적인 프로토콜로는 HTTP, HTTPS, FTP, TCP/IP, POP등 이 있다.
HTTP는 하이퍼텍스트 전송 프로토콜의 약자로 서버에서 데이터를 전송해주는 가장 기본적인 프로토콜 중에 하나이다. 하지만 HTTP(Hyper Text Transfer Protocol)는 전송되는 데이터가 암호화되지 않아 내용이 노출될 수 있다. 이러한 보안 문제를 보완해주는 프로토콜이 HTTPS(Hyper Text Transfer Protocol Secure,하이퍼텍스트 전송 프로토콜 보안)이다.
SSL은 보안 소켓 레이어(Secure Socket Layer)의 약자로 Netscape사에서 서버와 브라우저 사이의 데이터 보안을 위해 만들어졌다. 웹 사이트에 회원가입, 결제, 게시판 사용, 주문, 상담 등 개인 정보를 취급하는 모든 사이트는 SSL 인증을 필수로 해야 한다. 이를 지키지 않을 시 법적으로 문제가 된다. SSl 구축을 하게 되면 HTTPS 프로토콜을 구성할 수 있다.
FTP(File Transfer Protocol)란 서버에 파일을 전송하기 위한 프로토콜을 말한다. 서버를 구축하거나 호스팅 업체를 통해 대여한 서버에 웹 페이지 구축에 필요한 이미지, 코드 파일 등을 업로드 할 수 있다.
DNS는 도메인 네임 서버(Domain Name Server)로, 도메인을 도메인이 올라가 있는 웹 서버의 IP로 연결하는 시스템이다. 웹페이지에 접속하기 위해 필요한 IP를 일일이 챙길 필요 없이 도메인과 IP를 변환해주는 역할을 한다.네이버를 예시로 들어보면, 주소창 IP '125.209.222.141'을 입력하면 도메인 주소인 'www.naver.com'으로 연결이 되어 나타난다.
도메인숫자로만 이루어진 IP와 달리 www.naver.com처럼 문자로 지정된 인터넷 주소(URL).
클라이언트는 '사용자'의 의미로 쓰이며 서비를 제공 받는 유저를 말한다. 서버는 서비스를 제공하고 데이터를 저장하는 컴퓨터를 말한다.서비스를 제공하느냐/제공받느냐에 따라 구분된다.
프론트 엔드는 웹 브라우저를 통해 유저가 직접 마주하는 웹 서비스의 앞단(front-end)을 담당하는 개발자이다. 클라이언트/서버를 기준으로 보면 웹 페이지 화면을 비롯한 클라이언트 영역을 담당한다. 백 엔드는 프론트엔드 개발자의 반대 개념으로, 웹 서비스의 뒷단(Back-end)을 담당하는 개발자. 주로 유저에게 보이지 않는 DB와 API로 이루어진 서버 영역을 관리, 개발하는 역할을 한다.
프레임워크는 프로그램을 개발하기 위한 구조를 제공하는 개발 환경이다.(특정 개발 언어를 개발하고자 하는 목적에 맞게 쉽게 작성할 수 있도록 뼈대를 갖추어, 개발자가 손쉽고 빠르게 구현할 수 있도록 만든 것)
코딩을 할 때 자주 쓰이는 여러 클래스(Class, 변수와 함수의 묶음)를 프레임워크가 정해둔 흐름에 맞춰 쓸 수 있도록 지원해 주기 때문에 복잡하거나 반복되는 작업에 대한 부담을 덜어줄 뿐만 아니라 개발에 들이는 시간 대비 프로그램의 질을 높일 수 있다. (자바스크립트에서는 뷰(Vue.js)와 앵귤러(Angular)가, 자바에서는 스프링(Spring)이 대표적인 웹 프레임워크로 꼽힌다.)
라이브러리는 프로그램을 개발하는데 필요한 여러 기능을 활용할 수 있도록 묶어놓은 함수 또는 기능의 집합, 도구를 말한다.
프레임워크가 개발을 제어하는 틀거리를 제공해준다면, 라이브러리는 도서관에서 책을 빌리듯 개발자가 필요한 기능을 마음대로 가져다 쓸 수 있는 일종의 모음집에 가깝다. 즉 정해진 방식으로 개발을 하게끔 정해주는 프레임워크와 달리 제어권이 개발자에게 주어지는 셈. (자바스크립트 웹 개발에 쓰이는 리액트(React)와 제이쿼리(jQuery)가 바로 라이브러리다.)
리팩토링은 개발코드의 기능을 바꾸지 않으면서 코드의 가독성을 높이고 수정하기 쉽게 만드는 과정을 말한다. 리팩토링을 진행하면 버그를 발견하거나 줄일 수 있고 개발 속도를 단축할 수 있다. 이러한 점 때문에 새로운 개발 기능을 추가해야 할 때 리팩토링을 하는 경우가 많다.
버그는 소프트웨어에서 발생하는 문제와 서비스를 실행하는 과정에서 발생하는 오류 등 코드에 오류가 있다는 의미로 쓰인다.
유저가 입력한 내용이 잘못됐을 때 발생하는 문제이다. 잘못 짠 코드처럼 내부 문제로 예상하지 못한 문제가 일어나는 버그와 달리, 외부에 있는 유저가 오탈자를 내거나 띄어쓰기를 실수하는 등 내부에서 정한 형식을 따르지 않을 때 주로 발생한다. (예를 들어 숫자만 적도록 되어있는 주민번호 입력창에 한글을 적는다면 에러가 일어날 수 있다.)
에러가 일어날 가능성을 개발자가 미리 예상하고 프로그램이 비정상적으로 종료되지 않도록 하는 것이다. 예외 처리(Exception Handling) 또는 트러블 슈팅(Trouble Shooting)을 통해 예외를 구분하고, 유저에게 문제를 바로잡아달라는 에러 메시지를 띄워줘야 에러로 인한 문제를 예방할 수 있다.(에디터에서 글을 쓸때, 필수입력이 빈칸으로 되어있다면 빈 칸을 알려주거나, 뒤로가기 클릭시 저장되지 않는다는 등의 메시지)
디버깅은 서비스에서 나타나는 오류인 버그의 원인을 찾아내고 수정하는 작업 과정을 말한다.(개발시, 많은 시간이 할애되는 과정)
응용 프로그램 프로그래밍 인터페이스의 줄임말로, 개발자가 만든 특정 기능을 다른 사람이 사용할 수 있도록 모듈화 한 것을 말한다. 오픈 API는 누구나 사용할 수 있도록 공개한 것이지만 사용된 코드는 숨겨서 공유할 수 있다. 오픈 API의 대표적인 기능으로 소셜 로그인 API, 지도 API등이 있다.
공개적으로 누구나 자유롭게 확인하고 수정하고 배포할 수 있는 코드를 말한다. 소스 코드가 오픈되어 있기 때문에 많은 개발자가 사용하며 문제점을 보완하거나 개선할 수 있으며, 대표적인 사례로는 리눅스 OS가 있다. 일부 제약 없이 사용할 수 있는 오픈소스도 있지만, 사용 및 공유 규칙 등의 라이센스가 있으니 주의해야한다.
프로그램을 구성하는 요소의 일부. 기능별로 나누어지는 프로그램을 말한다. 개발하며 코드의 양이 방대해지는데, 많은 코드를 한페이지에 넣는다면 유지 보수를 하거나 다른 개발자와 공유를 하기 힘들어진다. 그래서 기능별로 코드를 작성하는데, 이를 모듈화 프로그램이라 말한다.
문제를 해결할 때 이용하는 논리적인 절차나 방법으로, 프로그램 개발을 하는 과정에서 실행 명령어의 순서를 의미한다. 개발의 결과물이 똑같더라도 해결 과정에 따라 실행 속도, 오류 등의 차이점이 발생하기 때문에 알고리즘 순서도를 활용한다.
알고리즘을 알아보기 쉽게 도식화하여 작성한 것이다. 문제를 분석하는 순서를 논리적으로 단계화하여 정해진 기호로 작성한 것을 말한다. 순서도 작성에 따라 프로그램의 품질이 달라질 수 있으므로 개발의 중요한 역할이다.
사용자가 회원가입 시 입력한 정보나 서버를 통해 넘어오는 데이터 등을 저장하는 장소를 말한다. 데이터베이스를 관리하는 대표 시스템으로는 My SQL, MongoDB가 있다.(줄여서 DB. 데이터의 집합. 데이터를 저장하고 관리하는 일종의 창고 역할)
Git은 개발자들이 사용하는 버전 관리 프로그램을 말한다. 하나의 프로젝트를 여러 개발자가 함께 개발하는데 버전별로 코드를 저장하여 함께 공유할 수 있다. GitHub는 Git의 데이터를 온라인에 업로드하는 곳(온라인 창고)으로, 백업하거나 다른 GitHub유저들에게 오픈 소스를 공유하는 용도로 사용한다.
작성한 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업을 말한다. 컴퓨터가 이해할 수 있는 언어로 변환시키기 때문에 실행 속도가 빠르다.
개발 코드 파일은 하나로 작성되는 것이 아니라 여러 개의 파일로 만들어진다. 이 파일들을 모아 압축시켜 하나의 실행 파일로 만들거나, 컴파일된 코드를 실행할 수 있는 상태로 만드는 작업이다.
빌드가 완성된 실행 파일을 사용자가 실행할 수 있는 환경에 업로드하는 것이다. 웹으로 배포해서 사용자가 보는 브라우저 화면에 빌드한 파일을 오픈하는 것이다. 반면 앱으로 배포한다면 모바일스토어에 빌드한 파일을 업로드하여 사용자가 다운로드할 수 있도록 한다.
서비스에 버그, 오류, 장애가 발생했을 때, 긴급 배포를 하기 위한 코드 작업이다.
소프트웨어나 시스템을 만드는 데 쓰이는 개발 도구 키트이다. SDK 안에는 개발에 필요한 샘플 코드, 코드 편집기 같은 툴이나 콘솔, 안내 문서, API 등이 포함된다. (안드로이드용 모바일 앱을 개발하는 데는 Android SDK가, 자바(Java) 개발을 하는 데는 자바 개발 키트(JDK)가 쓰이는 등 여러 가지 SDK를 찾아볼 수 있다.)
APK는 안드로이드에서 동작하는 어플리케이션 확장자이고, IPA는 IOS에서 동작하는 어플리케이션의 확장자이다. 두가지 모두 디바이스에 앱을 설치하는 역할을 한다.
IDE는 통합 개발 환경의 줄임말로 개발을 할 때 소스 코드 작성, 디버깅, Git, 컴파일 등의 작업을 한 곳에서 할 수 있도록 만든 프로그램이다. 대표적으로 이클립스, 비주얼스튜디오 등이 있다.
리눅스는 컴퓨터 운영체제 중 하나로 유닉스 운영체제 기반으로 만들어졌다. 적은 비용으로 웹 서버, 메일 서버, FTP등을 구출할 수 있다. 공개 운영체제와 오픈 소스로 누구나 자유롭게 수정하고 배표할 수 있는 것이 특징이다.
서버에서 데이터를 처리하는 방법이다. 동기 방식은 요청한 순서대로 데이터를 처리하는 방식이고, 비동기 방식은 요청한 순서에 상관없이, 데이터를 처리하는 동안 다른 데이터도 요청할 수 있는 개발 방식을 말한다.
워터폴 방법론은 완전히 기획이 끝난 이후에 개발을 하는 개발 방법론이고, 애자일 방법론은 서비스를 단위로 쪼개어 특정 기간 안에 개발 범위를 세분화하고 점진적으로 고도화해나가는 개발 방법론이다.
개발자가 작성한 개발 코드를 다른 개발자들이 함께 검토를 하는 과정을 말한다. 이를 통해 버그를 발견하거나 코드를 개선할 수 있는 장점이 있다.