잡다

개발 관련 용어 정리 본문

개발/기타

개발 관련 용어 정리

크로우 2020. 12. 26. 18:14

서버(server):

외부에서 인터넷 등을 이용해 원격으로 접속할 수 있도록 구성된 컴퓨터 또는 프로그램.

 

클라이언트(client):

개발쪽에서는 주로 서버에 접속하는 주체, "사용자"의 의미로 쓰인다.

 

웹 앱(Web App, Web Application):

웹 브라우저에서 동작하는 어플리케이션을 이르는 말. SPA 등이 여기에 해당한다.

 

SPA(Single Page Application):

여러 개의 페이지로 이루어진 기존 웹 사이트와 달리, 최초에 접속할 때 한 번만 페이지를 다운 받고, 나머지는 클라이언트의 자원을 이용해 라우팅, 페이지 렌더링 등의 기능을 수행하는 웹 앱이다.

 

렌더링(rendering):

분야마다 의미가 조금씩 다르다. 웹에서는 브라우저가 코드를 바탕으로 클라이언트에게 시각적으로 볼 수 있는 페이지를 구성하는 작업, 또는 동적으로 데이터를 구성하는 작업을 말한다.

 

서버사이드 렌더링(SSR, Server-Side Rendering):

동적인 데이터를 서버의 자원을 이용해 미리 html 포멧으로 바꾸어 렌더링한 후 클라이언트에게 보내주는 방식을 말한다. 주로 클라이언트사이드 렌더링과 비교하여 설명한다.

 

클라이언트사이드 렌더링(CSR, Client-Side Rendering):

서버로부터 페이지를 내려받은 후, 클라이언트의 자원(cpu, memory 등)을 이용해 동적인 데이터를 렌더링 하는 방식을 의미한다. 주로 서버사이드 렌더링과 비교하여 설명한다.

 

하이브리드 앱(Hybrid App, Hybrid Application):

웹 브라우저와 모바일 환경에서 모두 동작하는 앱을 말한다. 덧붙이면 모바일 환경에서만 동작하는 앱은 네이티브 앱(Native App)이라고 한다. 주로 웹 개발 환경을 모바일로 끌어다 쓰는 경우가 대부분이나, 반대의 경우도 드물게 있다.

 

URL(Uniform Resource Locator):

원래는 해당 파일의 위치를 가리키는 말이다. 예를 들면 https://eunsatio.io/images/background.png는 images 폴더 안의 background.png 파일을 기리키는 URL이다.

요즘은 대부분 웹 서버에서 핸들링 기능을 지원하기 때문에 웹 페이지 주소는 URL보다는 URI가 더 많고, 더 정확한 표현이다. 실제로 외국 포럼에 가보면 URL보다는 URI를 더  많이 쓴다.

 

URN(Uniform Resource Name):

웹 사이트는 반드시 http나 https 프로토콜 시작한다. 하지만 pdf나 로컬에 있는 html 파일 등을 웹 브라우저에서 보면 file로 시작하는 것을 볼 수 있는데, 이런 형태를 URN이라고 한다. http, https는 해석할 수 있는 프로그램이 브라우저라는 의미인데, 예를 들어 haha://isbn:5d8ec430-21cd 같은 주소(실제 주소 아님)는 haha를 해석할 수 있는 프로그램이 있어야(만들거나) 동작한다.

 

URI(Uniform Resource Identifier):

URL과 URN을 포괄하는 의미이다. 때문에 한국말로 주소는 URI라고 쓰는 것이 더 정확하다(실제로 외국 포럼에는 URI를 더 많이 쓴다). 예시는 다음과 같다.

1) 식별자 - https://eunsatio.io/blog/develop . 이 URI는 실제로 서버의 blog 디렉토리에 있는 develop 파일을 가리키는 것이 아니다. 실제로 서버에는 blog 디렉토리조차 없을 수 있다. 다만 렌더링을 담당하는 쪽에서 페이지를 구분하는 "식별자(identifier)"로 사용하는 것이다.

2) URN - crawler://crawl?url=eunsatio.io 처럼 웹 기반의 구조 문법을 포괄한다.

 

프로토콜(protocol):

장치 간 통신을 위한 통신 규약이다.

 

HTTP(HyperText Transfer Protocol):

인터넷에서 정보를 주고 받을 수 있는 프로토콜. 주로 80번 포트를 사용한다.

 

HTTPS(HTTP over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure):

HTTP 프로토콜의 보안 강화 버전으로 TLS 암호화 기술을 이용해 통신한다. HTTP 프로토콜은 해커가 요청을 가로챌 경우 비밀번호 등 민감한 정보가 평문 그대로 노출되기 때문에 위험한데, HTTPS는 해커가 요청을 가로채더라도 암호화되어 있기 때문에 해킹의 위험이 굉장히 줄어든다. 요즘은 개인정보를 사용하는 사이트들이 대부분 HTTPS를 적용하는 추세이므로,  HTTPS를 적용하지 않은 사이트라면 개인정보는 적지 않는 것이 좋다(브라우저에서도 주의하라는 표시를 해준다). 주로 443번 포트를 사용한다.

 

SSL(Secure Socket Layer):

인터넷에서 정보를 암호화해서 송수신하는 프로토콜. 현재는 TLS로 개명되었다. 암호화는 웹 뿐만 아니라 FTP 송수신 등에도 적용할 수 있다.

 

TLS(Transport Layer Security):

인터넷에서 정보를 암호화해서 송수신하는 프로토콜. SSL을 기반으로 개발한 기술로, 국제 표준으로 인정 받은 프로토콜이다.

 

웹 서버(Web Server):

주로 HTTP 프로토콜로 오는 요청을 처리해, 웹 페이지를 보내주거나 데이터를 관리하는 서버를 말한다.

 

프레임워크(Framework):

개발 환경 개선을 위해 추가적으로 사용하는 도구.

 

라이브러리(library):

개발 환경을 개선을 위해 사용하는 플러그인 등을 말한다.

 

플러그인(plug-in):

기능의 구축을 위해 미리 만들어 놓은 모듈이나 라이브러리를 말한다.

 

UX(User eXperience):

사용자 경험. 사용자가 제품을 사용하며 얻게 되는 경험을 의미한다.

 

UI(User Interface):

사용자가 제품을 사용하기 위한 기능.

 

GUI(Graphic UI):

사용자가 기능을 사용할 수 있도록 시각적으로 제공하는 화면.

 

GNB(Global Navigation Bar):

페이지에서 각 페이지로의 이동 기능을 제공하는 인터페이스.

 

LNB(Local Navigation Bar):

서브페이지에서 다른 페이지로의 이동 기능을 제공하는 인터페이스.

 

웹 접근성:

누구나 웹에 접근할 수 있는가의 여부. 웹 접근성 심사는 대체로 장애를 가진 이들의 인터넷 사용 환경을 고려해 웹을 구성했는지의 여부를 판단한다.

 

반응형 웹(Responsive Web):

브라우저의 사이즈에 따라 유동적으로 변하는 레이아웃을 제공하는 웹 사이트.

 

정적 웹(Static Web):

브라우저의 사이즈가 아닌 사용자의 장치에 따라 고정적인 레이아웃을 제공하는 사이트. 대표적으로 네이버나 다음 같은 포탈이 있다(브라우저의 사이즈를 줄여도 레이아웃이 바뀌지 않음).

 

웹 호스팅:

미리 세팅되어 있는 웹 서버 환경의 일부를 제공하는 서비스이다. root 계정으로 접속이 불가능하기 때문에 서버의 설정을 바꾼다거나 하기 어렵다. 업체에 따라 서버의 종류나 버전이 상이하기 때문에 서버의 자유로운 설정을 원한다면 서버 호스팅을 받는 게 낫다.

 

서버 호스팅:

서버 임대. 웹 서버를 기본적으로 설치해 주는 경우가 대부분이나 직접 설치해서 사용해야 하는 경우도 있다. 서버 컴퓨터의 일부 자원을 분할해서 제공하는 가상 서버 호스팅도 있다.

 

도메인 호스팅:

example.io와 같은 도메인 주소를 호스팅하는 서비스.

 

FTP(File Transper Protocol):

서버와 클라이언트가 파일을 송수신하기 위해 사용하는 프로토콜. 주로 21번 포트를 사용한다. 암호화가 적용되지 않았기 때문에 최근에는 사용을 자제하는 추세다.

 

SFTP(SSH FTP, Secure FTP):

SSH 방식을 이용한 파일 전송 프로토콜이다. 주로 22번 포트를 사용한다.

 

FTPS(FTP Secure, FTP-SSL, FTPES, S-FTP):

기존의 FTP에 TLS 방식의 암호화를 채택한 파일 전송 프로토콜이다. FTP와 마찬가지로 주로 21번 포트를 이용한다.

 

TELNET:

서버에 직접 연결해 작업을 수행하기 위한 용도(명령어 실행 등)으로 이용하는 프로토콜. 주로 22번 포트를 이용한다. 암호화가 적용되지 않았기 때문에 대부분 SSH로 대체되었다.

 

SSH(Secure SHell):

기존의 telnet에 암호화 기술을 추가한 프로토콜. 주로 22번 포트를 이용한다.

 

포트(port):

사전적 의미로는 항구를 뜻하나, 프로그래밍 쪽에서는 네트워크에서 쌍방이 통신하기 위한 통로를 의미한다.

 

AJAX(Asynchronous Javascript and XML):

웹에서 Javascript를 이용해 비동기 방식의 데이터 처리를 이용하는 기법이다.

 

동기 방식(synchronous):

기능이 순차적으로 처리되는 것을 의미한다.

 

비동기 방식(asynchronous):

기능이 순서에 상관 없이 처리되는 것을 의미한다.

 

자바스크립트(Javascript):

원래는 웹에서 간단한 기능 수행을 위해 개발된 언어였으나, 2019년 현재 가장 핫한 언어로 자리 매김했다(제일 많이 쓰는 거 아님. 하지만 곧 그렇게 될 듯). 초기 이름은 LiveScript였으나, 당시 핫하던 Java의 유명세를 이용하고자 마케팅 협약을 맺어 Javascript로 개명하였다. DOM 구조나 브라우저를 조작할 수 있다. 브라우저의 JVM에 의존하는 프로토타입 기반의 인터프리터 언어이다.

 

JVM(Javascript Virtual Machine):

브라우저에서 동작하는 가상 엔진으로 주로 웹 페이지의 자바스크립트를 읽고 수행, 관리하는 역할을 한다. 가비지 콜렉션이 자동으로 이루어진다.

 

인터프리터(interpreter):

프로그래밍 언어의 코드를 바로 해석(interpret)해 실행하는 프로그램이나 환경을 의미한다. 인터프리터 언어는 실행하기 전에 미리 코드를 컴파일하는 컴파일러 언어와 비교된다.

 

컴파일러(compiler):

번역기. 프로그래밍 언어를 다른 형태로 변형하는 프로그램 또는 시스템이다.

 

DOM(Document Object Model):

HTML이나 XML 문서를 처리하는 API로, 문서의 구조적 형태(tree 구조)를 제공한다.

 

타입스크립트(TypeScript):

자바스크립트의 슈퍼셋인 오픈 소스 언어이다. 마이크로소프트에서 개발, 유지하고 있으며, 직접 실행은 불가능하고 컴파일러를 통해 자바스크립트로 컴파일해야 한다. 기존에 자바스크립트에 없던 정적 타입, 인터페이스 등을 제공한다.

 

CSS(Cascading Style Sheets):

주로 웹에서 HTML로 이루어진 페이지를 꾸미기 위해 사용하는 언어이다. 요소의 넓이, 배경 색상 등을 지정할 수 있으며 CSS level 3에서는 애니메이션 관련 기능이 대폭 강화되었다.

 

SASS(Syntactically Awesome Style Sheets):

CSS의 슈퍼셋으로 직접 실행은 불가능하며 컴파일러를 통해 CSS로 컴파일해야 한다. 기존 CSS에서는 불가능했던 제어문, 반복문, 여러 단위 계산, 트리형 선택자 등을 지원한다.

 

SCSS(Sassy CSS):

SASS의 후발 주자이나 요즘에는 대부분 SCSS를 쓰는 추세이다. SASS가 기존 CSS와는 다소 다른 문법을 차용했다면 SCSS는 기존 CSS의 문법에 여러가지 자료형과 기능을 추가했기 때문에 쉽게 익숙해질 수 있다. 마찬가지로 컴파일러를 통해 CSS로 컴파일해야 사용이 가능하다.

 

HTML(HyperText Markup Language):

웹 페이지에서 구조적 문서를 만들기 위해 사용하는 언어이다. 원래는 단순한 웹 문서를 위한 언어였으나, 최근에는 CSS(스타일), Javascript(동적 기능)과 같이 사용해 웹 페이지를 만드는 데 사용한다.

 

선택자(selector):

DOM 요소에 접근하기 위해 사용하는 문법으로, CSS와 자바스크립트 모두 비슷한 선택자를 사용한다.

 

이벤트(event):

사용자의 동작 등 브라우저의 작업을 요구하는 것을 말한다. 대표적으로 클릭 이벤트 등이 있으며, 자바스크립트나 CSS로 이 이벤트를 후킹해 특정 기능을 수행할 수 있다.

 

후킹(hooking):

어떤 작업이 이루어 지는 과정에 개입하여, 해당 작업을 처리하기 전 특정 작업을 수행하는 기법을 말한다.

 

JSON(JavaScript Object Notaion):

속성-값 쌍으로 이루어진 데이터로 기술 방식. 주로 XML과 비교하여 설명한다. JavaScript에서 사용하는 데이터 형식을 그대로 사용하므로, 웹에서 데이터를 송수신하는데 많이 사용한다.

 

XML(eXtensible Markup Language):

W3C에서 개발한 다목적 마크업 언어로, 주로 데이터를 기술하는 데 사용한다. 최근에는 후발 주자인 JSON에 많이 자리를 내주었다. HTML과 유사한 문법으로 작성한다.

 

W3C(World Wide Web Comsortium):

월드 와이드 웹(World Wide Web)을 위한 국제 표준을 개발하고 장려하는 국제 기구이다.

 

ES스크립트(ES, ECMAScript):

정보 통신 표준화을 위한 국제 비영리 기구인 Ecma 인터네셔널의 ECMA-262 기술 규격에 정의된 프로그래밍 언어이다. 흔히 자바스크립트를 EMCA스크립트와 동일하게 부르는 경우가 많지만, ECMA스크립트는 좀 더 정확히 말하면 표준 명세서이고, 자바스크립트는 이에 맞춰서 업데이트를 하고 있다고 보는 것이 맞다. ES5까지는 버전명을 붙였으나, ES6부터는 ES2015와 같이 년도를 붙여서 기술하기 시작했다. 개발자들은 년도 표기로 쓰자는 추세이다.

 

Node.js:

웹 상 언어였던 자바스크립트를 서버에서도 사용할 수 있게끔 만든 런타임 라이브러리이다.

 

npm(Node Package Manager):

Node.js의 기본 패키지 관리 모듈로, 자바스크립트 언어 환경을 위한 패키지와 의존성 모듈을 온라인으로 설치, 배포할 수 있다. 최근 npm 없이 개발하는 자바스크립트 프로젝트가 없을 정도이고, 자바스크립트도 상승세이므로 앞으로 더 성장할 것으로 전망된다.

 

크롤링(crawling):

특정 웹 페이지의 콘텐츠를 긁어오는 것을 의미한다.

 

크롤링 봇(crawling bot):

크롤링 기능을 수행하는, 자동화된 프로그램 또는 시스템을 의미한다. 대표적으로 구글의 Googlebot이나 네이버의 Yeti, 마이크로소프트의 Bingbot이 있다. robots.txt로 이들의 행동을 규제할 수 있으나, 권장사항이므로 얼마든지 크롤링 봇이 무시할 수 있다.

 

의존성(dependency):

A 모듈이 B 모듈의 기능에 의지하고 있을 경우 B 모듈을 A 모듈의 "의존성 모듈"이라고 말한다.

 

소켓 프로그래밍(Socket Programming):

http 요청은 클라이언트가 서버에 요청을 하면, 서버가 답을 하는 것으로 연결이 끊어진다. 하지만 소켓 프로그래밍은 클라이언트와 서버가 소켓을 계속 열어놓고, 송·수신을 대기하고 있는 형태이기 때문에 별도의 클라이언트 요청 없이도 서버가 응답을 여러번 보낼 수 있다. 대표적으로 채팅 서버를 만들 때 소켓 프로그래밍을 사용한다.

 

라우팅(routing):

네트워크에서 데이터를 보낼 경로를 선택하는 과정으로, 웹에서는 페이지를 이동하는 과정을 라우팅이라고 한다.

 

도커(Docker):

리눅스 기반의 운영체제에서 프로그램을 자동으로 설치해주는 프로그램이다. 오픈 소스 프로젝트이며, 비슷한 서버 환경을 자동적으로 구성해야할 때 자주 사용한다.

 

리액트(React):

페이스북을 주축으로 개발, 유지되는 오픈 소스 자바스크립트 프론트엔드 라이브러리로, 웹 앱과 모바일 앱 개발 시 사용할 수 있다. React.js는 웹 어플리케이션, React는 모바일 어플리케이션 라이브러리로 분류하기도 한다. 기본적으로 탑재되어 있는 모듈이 적어 기본 용량은 적은 편이나, 말 그대로 자주 쓰는 모듈도 없는 편이므로 초기 개발 환경 구성에 시간이 많이 투자되는 편이다.

 

Agular.js:

구글의 주도 하에 개발, 유지되는 오픈 소스 자바스크립트 프레임워크이다. 양방향 데이터 바인딩 등을 주 기능으로 내세웠으나 구글이 진행하는 프로젝트들이 대부분 그렇듯 초기에는 부실하고 코드가 직관적이지 않은 부분이 많았다. 이 부분은 Angular 2버전에서 대폭 개선되었고, 아예 프레임워크의 성격 자체가 바뀌었기 때문에 Angular.js가 아닌 Angular로 이름을 바꿨다. 때문에 개발자들은 Angular.js를 Angular 1, Angular를 Angular 2+라고 부르기도 한다.

 

앵귤러(Angular):

구글의 주도 하에 개발, 유지되는 타입스크립트 기반의 프론트엔드 프레임워크이다. 오픈 소스 프로젝트이며, Angular.js 때와 구조 자체가 다르기 때문에 버전 업그레이드가 어렵다는 평을 받기도 했다. 자바스크립트 외에 타입스크립트를 추가로 배워야 하고, 앵귤러에서 독자적으로 채택한 구조에 익숙해져야 하기 때문에 공부하는 데 시간이 많이 걸린다. 정형화된 개발 방식을 제공하므로 대형 웹 어플리케이션 개발에 접합하다는 평을 받는다.

 

Vue.js:

몇몇 개인 개발자들이 공동으로 개발한 오픈 소스 자바스크립트 프레임워크이다. 개발자의 말에 의하면 Angular.js와 리액트의 장점만을 가져오고자 했으며, 간단한 사용법 때문인지 최근 가장 핫한 자바스크립트 프레임워크로 각광 받는다(물론 가장 사용률이 높은 건 아직 리액트). 스크립트로 임베드해서 사용하는 방식과 별도의 CLI(Command Line Interface)를 사용하는 방식을 모두 제공하며, 유연성을 가장 큰 장점으로 내세우고 있다.

 

도메인(domain):

***.***.*.***과 같은 형태의 IP 주소가 아닌 eunsatio.io 처럼 문자 형태로 제공되는 주소를 말한다.

 

서브도메인(subdomain):

특정 도메인의 하위 도메인으로, 예를 들어 www.example.com은 example.com의 서브도메인이다. 대부분의 도메인 호스팅 업체가 example.com 도메인을 샀을 때 무료로 서브도메인을 추가할 수 있는 기능을 지원한다.

 

네임 서버(name server):

주로 도메인 호스팅 업체에서 지정된 서버로의 연결을 위해 사용하는 중계 서버이다. 예를 들어 example.net으로 접속을 시도하면, 브라우저는 해당 도메인을 소유한 호스팅 업체의 네임 서버로 접속하고, 네임 서버는 다시 지정된 도메인이나 IP로 브라우저를 넘겨 준다.

 

DNS(Domain Name System):

도메인의 연결을 위해 사용하는 시스템이다. 레코드를 사용하며 흔히 사용하는 레코드 방식에는 A Record(IPv4 방식 ex.111.222.333.444)와 CNAME Record(지정한 도메인 주소로 연결)이 있다.

 

와일드 카드(wild card):

프로그래밍에서 와일드 카드는 "전부"를 의미한다. 예를 들어 *.example.com은 example.com의 모든 서브도메인을 의미하며, HTML 선택자에서 *은 모든 DOM 요소를 의미한다.

 

포워딩(forwarding):

웹에서는 주로 네트워크 환경에서 연결을 받아 다른 쪽으로 넘겨 주는 것을 말한다.

 

객체 지향 프로그래밍(Object-Oriented Programming):

프로그래밍 방식 중에 하나로, 프로그램을 하나의 명령어 묶음으로 보기 보다 여러 개의 독립된 객체로 보는 데서 시작한다. 비슷한 말로 모듈화 프로그래밍, 구조적 프로그래밍 등이 있으며, 주로 절차 지향 프로그래밍과 비교하여 설명한다. 개발에 복잡해지나 유지 보수와 확장이 쉽다는 장점이 있다.

 

절차 지향 프로그래밍(Procedural Programming):

프로그래밍 방식 중에 하나로, 순차적인 명령어의 처리에 집중한다. 때문에 명령어 프로그래밍으로 불리기도 하며, 개발이 단순하고 코드가 단순할 때는 오히려 유지보수에 장점이 있다. 주로 객체 지향 프로그래밍과 비교하여 설명한다.

 

프론트엔드(Front-end):

주로 프로그램의 시각적으로 보이는 부분 또는 클라이언트의 자원을 활용하는 분야를 말한다. 웹에서는 프론트엔드에서 데이터를 처리하는 등 백엔드의 역할을 프론트엔드가 담당하는 경우가 많아지면서 퍼블리셔와 프론트엔드로 세분화됐다.

 

백엔드(Back-end):

주로 프로그램의 서버, 데이터 처리, 보안 등을 담당하는 분야를 말한다. 최근 클라이언트 쪽 컴퓨터 사양이 좋아지면서, 웹에서는 데이터 처리를 백엔드에서 하기보다는 프론트엔드에서 하는 쪽으로 옮겨가는 추세이다.

 

퍼블리셔(Publisher):

웹에서 HTML과 CSS 등으로 눈에 보이는 구조와 스타일만을 담당하는 개발자를 말한다. 프론트엔드가 담당하는 일이 많아짐에 따라 세분화되었으며, 상황에 따라서는 간단한 자바스크립트 코딩을 하기도 한다.

 

BBS(Bulletin Board System, 전자 게시판):

주로 특정 웹 게시판의 소프트웨어를 가동하는 시스템을 말한다. 원래는 소프트웨어 중심의 BBS가 활발하였으나 인터넷이 보급화되면서 인터넷에 기반한 게시판 시스템을 이르는 말이 되었다.

 

PHP(Professional Hypertext Preprocessor):

주로 동적 웹 페이지를 만들 때 사용하는 서버사이드 프로그래밍 언어이다. 워드프레스, 그누보드, XpressEngine 등의 BBS가 PHP 기반으로 만들어졌다. 대체로 HTML 구조에 PHP 코드를 끼워 넣는 형태로 사용하며, 타입이 느슨하고 코딩이 쉽기 때문에 빠른 결과를 내야하는 프로젝트, 소규모 프로젝트에서 주로 사용한다.

 

JSP(Java Server Pages):

Java를 기반으로 하는 서버사이드 프로그래밍 언어이다. 주로 톰캣 서버와 함께 사용하며, 개발이 복잡한 편이나 그만큼 보안도 강력하기 때문에 주로 대규모 시스템에 사용한다. Java 기반이므로 서버도 JVM(Java Virtual Machine) 위에서 작동한다.

 

ASP(Active Server Pages):

마이크로소프트에서 동적 웹 페이지를 생성하기 위해 제작한 서버사이드 스크립트 엔진이다. 다른 언어와 달리 여러가지 언어를 지원하나, MS에서 제작한 만큼 윈도우가 아닌 다른 OS에서는 구동하기 어렵다. 특히 윈도우 서버가 리눅스 서버에 비해 호스팅 가격이 비싼 편이기 때문에 점유율이 높지는 않다. 후속작으로 ASP.NET이 있으며, 2020년 이후로 지원이 끊기기 때문에 신규 프로젝트에는 거의 쓰이지 않고, 공기관에서 아직도 가끔 쓰는 것을 볼 수 있다.

 

ASP.NET

ASP의 후속작으로 .NET Framework를 기반으로 한 서버사이드 웹 프레임워크이다. .NET에서 지원하는 언어는 대부분 지원하나 대체로 C#과 Visual Basic .NET을 주로 사용한다.

 

가상 머신(VM, Virtual Machine):

OS 등 컴퓨팅 환경을 에뮬레이션(emulation)하는 소프트웨어를 의미한다.

 

가비지 컬렉션(Garbage Collection):

메모리 관리 기법 중 하나로 더 이상 쓸모 없어진 메모리 영역을 삭제하는 기능이다. C나 C++ 등의 언어는 가비지 컬렉션이 자동으로 이루어지지 않기 때문에 메모리를 지정하고 해제하는 부분에 많은 신경을 써야 한다.

 

스택 오버플로(Stack Overflow):

프로그래밍에서는 프로그램에서 메모리가 지정 영역을 넘어갈 때 발생하는 에러이다. 하지만 개발자들에게는 Q&A 사이트(https://stackoverflow.com)로 더 유명하다. 쉽게 말하자면 전 지구촌 개발자들의 지식-인인 셈. 특히 신기술은 관련 문서나 에러에 대한 해결책을 찾기 어렵기 때문에 개발자들이 상부상조하면서 서로 해결책을 찾아주는 가슴 따뜻한 사이트이다. 개발자의 제일 극한 직업이 스택 오버플로 개발자라는 농담이 있을 정도로 개발자에게는 없어서는 안 될 사이트.

 

깃(Git):

분산형 버전 관리 시스템이다. 하나의 프로젝트를 여러가지 브랜치(branch)로 나누어 관리할 수 있으며, 이를 통합하고 버전을 릴리즈, 롤백 할 수 있는 시스템이다. 주로 깃허브를 저장소로 이용해 사용한다.

 

깃허브(GitHub):

무료 깃 저장소. 오픈 소스 프로젝트일 경우에는 저장소를 전부 무료로 사용할 수 있으며, 비공개 저장소의 경우에는 참여자 3명 이하만 무료로 생성 가능하다. 많은 오픈 소스 프로젝트들이 GitHub를 저장소로 삼고 있으며, 처음에는 오픈 소스에 부정적이던 마이크로소프트는 GitHub를 인수하기까지 했다. 온라인 기반이기 때문에 어디서나 프로젝트를 푸쉬, 복사하는 것이 가능하다. 아예 프로그래머 구직 시에 GitHub 계정 url을 요구하는 회사들도 있다.

 

웹팩(webpack):

오픈 소스 자바스크립트 모듈화 도구이다. 원래 바닐라 자바스크립트에는 모듈이라는 개념이 따로 없는데, 이를 모듈화하고 더 나아가 HTML, CSS 파일까지 모듈화 할 수 있게끔 도와주는 도구로, 다수의 프레임워크가 웹팩에 기능을 베끼거나 직접 사용하고 있다.

 

바벨(babel):

Node.js 기반의 자바스크립트 오픈 소스 컴파일러이다. 주로 자바스크립트 최신 문법으로 작성한 코드를 이전 버전의 문법으로 컴파일해, 최신 문법을 해석하지 못하는 시스템과의 호환을 위해 사용한다.

 

캐시(cache):

필요한 데이터를 복사해두는 저장소를 말한다. 주로 웹에서 이미지나 CSS, JS 파일, 경로 등을 저장해 놓고, 나중에 다시 페이지를 로드할 때 서버에 요청을 하는 것이 아니라 저장해 놓은 이미지를 활용하는 것을 캐싱(caching)이라고 한다. 때문에 브라우저에 캐시가 남아 있다면 서버에서 파일을 업데이트해도 실제로 브라우저에서는 업데이트되지 않는 문제가 발생하곤 한다.

 

세션(session):

웹 서버에서 클라이언트의 데이터를 임시로 저장해 놓은 파일, 저장소 등을 의미한다. 주로 클라이언트의 로그인 정보나, 장바구니 등의 기능에 쓰이며 쿠키가 클라이언트 쪽 저장소를 이용하는 것에 비해 세션은 서버의 저장소를 이용한다.

 

쿠키(cookie):

브라우저에서 제공하는 작은 크기의 저장소이다. 크기가 작기 때문에 주로 간단한 정보를 저장할 때 사용한다. 세션이 서버 쪽 저장소를 이용하는 것에 비해 쿠키는 클라이언트의 저장소를 이용한다.

 

API(Application Programming Interface):

프로그램이나 시스템을 구축하는 데 사용하는 도구이다. 예를 들어 구글 API라고 하면 구글에서 제공하는 기능(구글 계정으로 로그인 등)을 사용할 수 있게끔 만들어 놓은 인터페이스를 말한다.

SDK(Software Development Kit):

주로 프로그래머에게 특정한 소프트웨어, 시스템 등의 제작 환경을 제공하는 개발 도구이다. 예시로 안드로이드 앱을 만드려면 Java SDK를, iOS 앱 개발을 위해서는 iOS SDK를 사용해야 한다.

 

데이터베이스(DataBase, DB):

데이터를 저장하는 저장소이다.

 

SQL(Structured Query Language, 구조화 질의어):

주로 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 프로그래밍 언어이다. 많은 데이터베이스가 SQL을 표준으로 사용한다.

 

MEAN 스택(MEAN stack):

데이터베이스로 MongoDB, 웹 서버로 Express, 프론트엔드 프레임워크로 앵귤러 또는 Angular.js와 npm을 사용해 웹 사이트를 구축, 관리하는 프로그래밍 스택이다. 전부 자바스크립트 기반이기 때문에 하나의 언어로 서버 구축, 데이터베이스 설계, 웹 사이트 구축까지 할 수 있다는 장점이 있다.

 

MERN 스택(MERN stack):

데이터베이스로 MongoDB, 웹 서버로 Express, 프론트엔드 프레임워크로 리액트와 npm을 사용해 웹 사이트를 구축, 관리하는 프로그래밍 스택이다. 전부 자바스크립트 기반이기 때문에 하나의 언어로 서버 구축, 데이터베이스 설계, 웹 사이트 구축까지 할 수 있다는 장점이 있다.

 

MEVN 스택(MEVN stack):

데이터베이스로 MongoDB, 웹 서버로 Express, 프론트엔드 프레임워크로 Vue.js와 npm을 사용해 웹 사이트를 구축, 관리하는 프로그래밍 스택이다. 전부 자바스크립트 기반이기 때문에 하나의 언어로 서버 구축, 데이터베이스 설계, 웹 사이트 구축까지 할 수 있다는 장점이 있다.

 

부트스트랩(bootstrap):

일반적으로는 프로그램이나 시스템을 실행할 때 적재되는 프로그램을 의미한다. 부팅(booting)은 부트스트래핑(bootstrapping)의 준말이다. 같은 이름의 프레임워크도 존재하는데, 트위터에서 만들었으며 주로 프론트엔드에서 일관화된 UI를 구성하는 데 사용한다.

 

제이쿼리(jQuery):

웹 페이지의 DOM 구조를 쉽게 조작할 수 있도록 도와주는 자바스크립트 라이브러리이다. 바닐라 자바스크립트로는 다소 복잡한 작업도 쉽게 처리해준다는 장점이 있으나, 성능 문제와 여타 다른 플랫폼에 밀려 점차 사용을 자제하는 추세다. 하지만 아직도 현재 구축되어 있는 대부분의 사이트에서 사용하고 있으며, 점유율도 하락세이긴 하나 굉장히 높은 편이다.

 

리팩토링(refatoring):

코드를 고치는 기법을 의미한다. 기능은 되도록 변경하지 않으면서 코드를 내부적을 손 보는 기법으로, 개발자의 취향이나 팀의 원칙에 따라 방식의 차이는 있을 수 있다. 주로 DRY(Do not Repeat Yourself) 또는 DIE(Duplication Is Evil) 원칙에 근거해 중복 코드를 줄이거나 불필요한 과정, 변수 등을 제거하는 작업을 말한다.

 

인자(argument):

특정 함수를 호출 시에 함수에 전달하는 값을 말한다.

 

매개 형식 변수(parameter):

함수를 호출한 쪽에서 전달한 인자를 받는 변수를 말한다.

 

트래픽(traffic):

네트워크에서는 서버 데이터 전송량을 말한다. 전적으로 서버 입장에서의 데이터 송수신량을 말하며, 트래픽이 과다해지면 서버가 다운되기도 한다.

 

메타 태그(meta tag):

HTML의 <meta> 태그를 말한다. 사이트의 제목이나 설명 등을 크롤러에게 넘겨주거나, 브라우저에게 사이트의 특성을 알려주는 등에 사용한다. 예를 들면 카카오톡이나 페이스북에 사이트 URI를 첨부했을 때, 해당 사이트의 간략한 설명을 보여주는데, 이게 각 서비스의 크롤러가 사이트를 방문해 취득한 메타 태그의 정보를 바탕으로 한 것이다.

 

오픈 그래프(Open Graph, OG):

페이스북이 개발하였으며 메타 태그를 사용해 사이트의 주요 정보를 공유하는 프로토콜이다. 현재 대부분의 사이트들이 og 태그에 기반한 크롤링 서비스를 제공한다.

 

크로미움(Chromium):

구글에서 개발하는 오픈 소스 웹 브라우저이다. 구글 크롬이나 크롬 OS가 크로미움으로 개발했으며(크로미움에는 PDF 뷰어 등의 기능이 없다), 이들과는 별개의 라이선스이다. 이 외에도 오페라, 웨일 등의 브라우저가 크로미움을 기반으로 개발되었다. 마이크로소프트의 엣지(Edge) 브라우저도 2018년 말 크로미움의로의 전환을 선언했으며, 2019년 4월 기존 자체 차크라 엔진이 아닌 크로미움 기반의 엣지 프리뷰 버전을 공개했다.

 

위지윅(What You See Is What You Get, WYSIWYG):

화면에 보이는 대로 데이터를 편집, 출력하는 것을 의미한다.

 

일렉트론(Electron):

자바스크립트로 데스크톱 어플리케이션을 구축할 수 있는 오픈 소스 프레임워크이다. 런타임으로 Node.js 런타임, 프론트엔드로 HTML, CSS, 자바스크립트를 사용하며, VSCode 편집기, 디스코드 등이 일렉트론으로 제작되었다. 렌더링 엔진으로 크로미움을 사용한다.

 

JWT(JSON Web Tokens):

웹 표준(RFC 7519)으로, JSON을 사용하여 자가 수용적인 정보를 전달하는 데이터 포맷이다. 필요한 유효성 정보 등을 자체적으로 포함하고 있으므로 가볍고 사용하기 쉬우며, 주로 사용자 인증 등에 사용한다.

 

SMTP(Simple Mail Transfer Protocol):

주로 인터넷에서 이메일을 보내기 위해 사용하는 프로토콜이다. STMP 서버라고 하면 메일 전송을 담당하는 서버를 의미하며, 표준 포트는 25번, 587번, 465번이다.

 

WAS(Web Application Server):

HTTP 통신을 이용해 어플리케이션을 수행하는 서버로, 웹에서는 주로 DB와 연동해 동적인 데이터 처리에 이용한다. 동적 컨텐츠 수행이라는 점에서 웹 서버와는 구분된다.

 

PMA(PhpMyAdmin):

MySQL 데이터 베이스를 웹 인터페이스로 관리하기 위해 PHP로 작성된 오픈 소스 도구이다. MySQL 데이터 베이스 테이블, 필드, 열의 작성, 수정 삭제 등 다양한 작업을 수행할 수 있다.

 

MySQL:

오라클이 관리, 지원하는 오픈 소스 관계형 데이터베이스 관리 시스템이다. 현재 가장 많이 쓰이는 데이터베이스이다.

 

MongoDB:

NoSQL 오픈 소스 데이터베이스 중 하나로, JSON 형태의 동적 스키마 도큐먼트 데이터베이스 시스템이다. 스키마가 table에 있는 관계형 데이터베이스 시스템과 달리 각 도큐먼트마다 스키마가 있다는 점이 다르다.

 

schema(스키마):

주로 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 것을 의미한다.

 

modal(modal window, 모달, 모달 창):

쉽게 말해서 팝업 창으로, UI 디자인에서 부모 윈도우로 돌아가기 전 상호작용이 필요한 창을 말한다.

 

SEO(Search Engine Optimization):

웹 페이지를 색인하는 검색 엔진 또는 크롤러가 웹 페이지를 색인하기 쉽도록 웹 페이지를 최적화 하는 작업을 말한다.

 

PWA(Progressive Web App):

프로그레시브 웹 앱은 웹과 네이티브 앱의 이점을 통합한 웹 앱이다. 일반 웹 브라우저로 접속할 수 있지만, 앱에서 가능한 기능을 제공하므로 별도의 설치가 필요하지 않다는 것이 장점이다. 그러나 하나의 기술로서 언급되는 개념은 아니며, 개발 패턴이나 API 등에서 웹 앱을 구축하는 철학으로 보는 경우가 많다. 다음의 기능이 있을 때 PWA라고 볼 수 있다. 오프라인에서 동작 가능, 설치 가능, 푸시 알람 등.

 

LAN(Local Area Network):

근거리 통신망. 한 공간 또는 지역에 국한하여 묶는 네트워크이다.

 

 

 

 

 

 

 

출저:blog.eunsatio.io/develop/%EC%8B%AC%EC%8B%AC%ED%95%A0-%EB%95%8C-%EB%B3%B4%EB%A9%B4-%EC%A2%8B%EC%9D%80-%EB%9E%9C%EB%8D%A4-%EC%9B%B9-%EA%B0%9C%EB%B0%9C-%EC%9A%A9%EC%96%B4-%EC%82%AC%EC%A0%84

'개발 > 기타' 카테고리의 다른 글

vim 유용한 단축키 모음  (0) 2021.11.25
getResourceBundel 사용하기.  (0) 2021.09.13
Comments