개발용어
헷갈리는 개발용어들을 정리해본다.
목차
- 빌드
- 배포
- 환경변수
- 라이브러리 vs 프레임워크
- 도메인
- 비즈니스 로직
- 컬렉션
- 서버개발(백앤드)
- 메타데이터
- 해싱 / 해시함수
- 하드코딩
- 엔드포인트
- 래퍼(Wrapper) 패턴
- 유의적 버전(Semantic Versioning)
- 스크레이핑(scraping), 크롤링(crawling)
- 의존성(Dependency)
- SPA(Single-Page Application)
- 라우팅(Routing)
**포스팅은 목차의 역순으로 기술되어있다.(최신순)
라우팅(Routing)
- 사용자의 경로 이동을 관리하는 기술 또는 패턴
- 사용자가 요청한 URL 경로에 맞는 화면을 보여준다
- 이벤트(버튼클릭 등)에 따른 화면을 보여준다. - 서버 사이드 라우팅(SSR)
- URL의 요청에 따라 적절한 페이지를 렌더링하여 클라이언트에 전달하는 방식
- 서버에서 요청을 처리하고 적절한 HTML을 반환하므로 브라우저는 페이지 전환이 발생
- 주로 MPA에 사용된다. - 클라이언트 사이드 라우팅(CSR)
- 클라이언트 측에서 URL을 감지하고 해당 URL에 따라 동적으로 페이지를 로드하고 업데이트하는 방식
- 주로 JavaScript 기반의 라이브러리나 프레임워크를 사용하여 구현
- 초기 페이지 로드 이후에는 서버와의 통신 없이 콘텐츠를 업데이트할 수 있으므로 사용자 경이 향상된다.
- 주로 SPA에 사용된다. - 라우터(Router)
- 클라이언트 사이드 라우팅을 구현하는 주요 컴포넌트
- 대부분의 프론트엔트 프레임워크/라이브러리는 라우터를 제공한다
(ex : React의 React Router, Angular의 Angular Router, Vue의 Vue Router)
- a태그와 다르게 페이지를 리로드 하지 않기 때문에 불필요한 렌더링을 줄일 수 있다.
SPA (Single-Page Application)
- Single-Page Application, 단일 페이지 기반 어플리케이션
- 전통적인 MPA(Multi-Page Application)에서 발전된 형태
- Angular, Vue, React가 SPA를 지원하는 라이브러리들이다.
- 특징
1. CSR을 사용하여 구현한다
2. 하나의 HTML 페이지를 기반으로 동작하여 페이지간의 전환이 적다
(한 번 페이지를 로드하고 나면, 콘텐츠 변경은 페이지 전체를 새로고침하지 않고 JavaScript를 사용하여 동적으로 처리)
3. 클라이언트 측에서 데이터를 받아와 렌더링하고, 사용자의 상호작용에 따라 동적으로 콘텐츠를 업데이트
>> 빠른 응답성과 부드러운 사용자 경험을 제공
4. 비동기식 JavaScript(Ajax)와 웹 API를 사용하여 서버로부터 데이터를 가져온다.
5. 라우터(Router)를 사용하여 URL 경로와 뷰(화면)를 매핑하고, 사용자의 경로 이동을 관리한다. - 장점
1. 페이지라 리로드되지 않아 부드러운 화면전환과 빠른 응답성
2. 서버 트래픽 감소(필요한 정보만 비동기적으로 요청하므로)
3. 클라이언트와 백엔드가 분리되면서 개발이 용이해진다 - 단점
1. 초기에 필요한 모든 자원을 다운로드하므로 초기 로딩 속도가 느리다.
>> 코드 스프리팅과 자원 최적화 필요
2. 검색엔진 최적화(SEO)가 필요한 경우 추가적으로 작업해야한다
3. 클라이언트의 메모리에서 상태를 관리하므로 적절한 리소스 해제와 메모리 관리 기법을 사용해야한다.
의존성(Dependency)
- 코드 내에서 한 요소가 다른 요소에게 의존하는 상태
- 하나의 요소가 다른 요소의 존재나 동작에 영향을 받거나, 다른 요소의 기능을 사용해야 하는 상황을 의미하며, 다음과 같이 다양한 케이스들이 있다.
- 라이브러리 의존성
- 프로젝트에서 사용하는 외부 라이브러리나 패키지에 대한 의존성을 관리해야 합니다.
- 관리 : 서로 필요한 라이브러리들의 설치, 버전 간의 충돌 등을 고려해야 한다. - 함수의 의존성
- 하나의 함수가 다른 함수에게 의존하는 상황
- 함수 A가 함수 B를 호출하거나 함수 B의 결과를 이용하는 경우, 함수 A는 함수 B에 의존성이 있다고 한다. - 파일 의존성
- 프로젝트에서 다른 파일들에 의존하는 상황
- 하나의 파일에서 다른 파일을 가져와서 사용하는 경우, 파일 간에 의존성이 발생
- 관리 : 파일의 위치나 내용이 변경되면 의존하는 파일도 수정해야 한다. - 서비스 의존성
- 웹 애플리케이션에서 다른 서비스들에 의존하는 상황
- 인증 서비스, 데이터베이스 서비스 등을 사용하는 웹 애플리케이션에 의존성이 발생
스크레이핑(scraping), 크롤링(crawling)
- 스크레이핑
- 웹 페이지에서 원하는 정보를 추출하는 과정
- 웹 페이지의 HTML 구조를 파싱하고, 필요한 데이터를 선택적으로 추출하는 작업을 수행 - 크롤링
- 스크레이핑의 일종
- 크롤러 혹은 스파이더라고 불리는 프로그램을 사용하여 웹 페이지를 자동으로 탐색하고, 웹 페이지의 링크를 따라가며 데이터를 수집하는 작업
- 대규모 데이터 수집, 검색 엔진의 색인화 등에 활용됨
유의적 버전(Semantic Versioning)
- 버전 번호를 일관성 있게 관리하기 위한 표준 방법
- 버전규칙
- 버전 번호를 Major.Minor.Patch로 표현한다.
- 선두에 'v' 접두사를 추가하여 버전임을 표기할 수 있다.
ex) sample v2.1.4
1. Major (첫번째숫자)
- 주요한 업데이트를 나타낸다.
- 기존 버전과 호환되지 않는 중대한 변경 사항이 있을 때 증가
2. Minor (두번째숫자)
- 새로운 기능이 추가되었지만, 기존 API와 호환되는 업데이트
- 해당 업데이트는 하위 호환성을 유지한다.
3. Patch (세번째숫자)
- 버그 수정이나 기존 기능의 작은 수정이 있을 경우
- 해당 업데이트는 하위 호환성을 유지한다. - 버전 표기법
1. >, <=, <, <=
- 버전 범위의 대소관계를 표현한다.
ex) >1.2.3 (1.2.3 버전 이상)
2. - (hypen)
- 버전의 범위를 지정한다.
ex) 1.2.3 - 2.3.4 (1.2.3 버전 이상 2.3.4버전이하)
3. ~ (틸드범위)
- Minor 버전이 지정되어 있다면 Patch 변경을 허용한다.
- Minor 버전이 지정되어 있지 않으면 Minor 변경도 허용
ex) ~1.2.3 (1.2.3 이상 1.3.0 미만)
~2 (2.n.n 허용)
4. ^ (캐럿범위)
- 가장 왼쪽에 0이 아닌 요소를 수정하지 않는 범위로 변경을 허용
ex) ^1.3.3 (minor, patch 변경 가능)
^0.1.1 (patch 변경가능)
^0.0.3 (업데이트 허용 불가)
cf. major 버전이 0인 경우는 아직 정식 릴리즈가 되지 않은 것
5. X (와일드카드)
- 1.2.X 등과 같이 'X' 사용 시 어떤 숫자든 들어갈 수 있다.
래퍼(Wrapper) 패턴
- 다른 객체를 감싸서 새로운 기능이나 속성을 추가할 수 있도록 하는 디자인 패턴
- 객체를 캡슐화하여 새로운 기능을 추가하거나 객체의 동작을 변경하려는 경우 사용한다.
- Wrapper 객체 특징
- 기존 객체를 감싸기 때문에, 기존 객체의 모든 기능을 사용할 수 있음
>> 기존 객체의 동작을 변경하거나 확장
>> 동일한 인터페이스를 제공하여 기존 객체와 호환성을 유지
엔트포인트
- Endpoint, 서버나 서비스의 특정 URI에 HTTP요청을 보내는 것
- 클라이언트가 서버에 요청을 보낼 때 해당 요청이 어떤 기능을 수행할지를 나타내는 목적지 주소
- 예시
- https://api.example.com/users/123
>> 사용자 123의 정보를 가져오기 위한 엔드포인트
클라이언트가 HTTP GET 메서드를 사용하여 해당 엔드포인트로 요청을 보내면, 서버는 해당 사용자의 정보를 반환한다. - 각각의 엔드포인트는 고유한 URI를 가지고 있다.
** URI는 자원의 위치와 식별자를 나타내는 역할 - 엔드포인트는 API의 설계와 구현에서 중요한 역할을 하며, 명확하고 일관된 URI 규칙을 따라야 한다.
하드코딩
- 상수나 변수에 들어가는 값을 소스코드에 직접 쓰는 방식
- 장점
- 값을 바로 확인할 수 있다.
- 로딩 절차가 없어 속도가 빠르다 - 단점
- 외부 입력에 대한 유연성이 없고 확장성이 낮다.
- 코드 수정으로 인한 버그 발생 확률이 높다.
- 수정시마다 재컴파일, 재배포를 해야하기 때문에 시스템 운용 유지보수가 어렵다
해싱 / 해시함수
- 해싱 (Hashing)
해시함수에 문자열 입력값을 넣어서 특정한 값으로 추출하는 것 - 해시함수 (Hash Function)
- 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수
- 결과값을 통해서 역으로 입력값을 추정할 수 없다.
- 입력이 같으면 출력이 같다.
- 활용분야 : 자료구조, 프로그래밍언어 (자바의 Hash Map), 암호

메타데이터
- 다른 데이터를 설명해 주는 데이터
>> 데이터를 위한 데이터 - 동영상, 소리, 문서 등과 같이 실제로 존재하거나 사용할 수 있는 데이터는 아니지만, 이러한 실제 데이터와 직접적 또는 간접적으로 연관된 정보를 제공해주는 데이터를 말한다.
서버개발(백앤드)
- 서버개발(백앤드)은 PHP, Java, Python등으로 데이터를 저장 및 가공하는 비즈니스 로직을 개발하는 것을 의미한다.
업무는 다음 세가지로 나누어 볼 수 있다. - Batch프로그램 만들기
- 서버 내부적으로 데이터를 모아놨다가 한번에 처리하는 프로그램 - DB 테이블 만들기
- ERD설계 및 스키마설정 - API / 트랜잭션 만들기
- 트랜잭션 :
데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
* Commit : 하나의 트랜잭션이 성공적으로 끝났음을 알려주기 위해 사용하는 연산
* Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 DB의 일관성이 깨졌을 때, 해당 트랜잭션이 행한 모든 연산을 취소(Undo)하는 연산
비즈니스 로직
- 특정 비즈니스 요구사항에 따라 수행되는 어플리케이션의 핵심 로직
- 어플리케이션에서 어떤 일이 발생하는지, 어떻게 처리해야하는지에 대한 규칙이나 알고리즘으로 이루어져 있다.
- 비즈니스 로직을 애플리케이션에 구현함으로써 서비스를 제공한다.
- 예시
- 인터넷 쇼핑몰 애플리케이션에서 상품 구매와 관련된 비즈니스 로직
1. 고객이 상품을 장바구니에 담으면, 장바구니에 상품이 추가된다.
2. 고객이 주문을 완료하면, 장바구니에서 상품이 삭제되고, 주문 정보가 저장된다.
3. 주문 정보는 결제 완료 후에만 저장된다.
4. 상품의 재고량은 주문이 완료되면 감소된다.
5. 주문 정보는 고객에게 이메일 또는 문자 메시지로 전송됩니다.
...
도메인
- 어떤 시스템에서 다루는 문제영역 혹은 분야
시스템의 기능 및 업무 요구사항을 바탕으로 설계된다. - 예시
- 은행시스템 : 계좌, 고객, 거래 등의 도메인이 존재
- 쇼핑몰시스템 : 상품, 주문, 결제 등의 도메인이 존재 - 도메인 모델링
- 도메인을 이해하고 분석하기 위해 필요한 개념, 규칙, 업무 프로세스 등을 정의하는 과정
- 도메인이 구체화 되는 단계 - 도메인 객체
- 도메인 모델링을 통해 도출된 도메인의 구성요소를 구현한 객체
ex) 은행 시스템에서 계좌 도메인 객체는 계좌의 속성과 기능을 구현한 객체
- 비즈니스 로직을 포함하고 있으며, 시스템의 기능을 구현하는데 중요한 역할을 한다.
라이브러리 vs 프레임워크
- 큰 구분점 : 제어역전
- 라이브러리 : 개발자가 직접적으로 함수를 호출하는 등 정상적인 제어를 한다
- 프레임워크 : 개발자가 작성한 코드를 모듈이 실행하는 제어역전이 발생 - 라이브러리
- 단순 활용가능한 도구들의 집합 (재사용 가능한 코드들의 집합)
- 특정 기능을 수행하기 위한 함수, 클래스, 모듈 등의 모음
- like 집을 지을때 필요한 자재, PC조립시 cpu같은 부품들 - 프레임워크
- 기반구조를 제공하고 프로그래머가 완성시키는 작업을 한다.
- like집을 지을 기본 골격을 갖춘 집 조립 키트, PC조립시 마더보드
환경변수
- 환경이란?
소프트웨어가 깔린 컴퓨터, 소프트웨어가 돌아가는 컨테이너 등 소프트웨어가 동작하는 공간 - 환경변수란?
컴퓨터마다 지정된 값 - 용도
1. 특정 변수의 위치를 지정함으로써 동일한 명령어로 작동할 수 있다.
2. 각 PC에 환경변수를 달리 줌으로써 조건에 따라 달리 동작하도록 할 수 있다.
ex) mode: dev(개발용) / mode:prod(배포용)
3. 코드로 노출되어서는 안되는 정보들을 저장할 수 있다.
배포
- 빌드한 결과물을 사용자에게 전달하는 과정
- 애플리케이션에 따른 구체적 의미
- 데스크탑프로그램 : 다운로드받을수 있도록 업로드하기
- 모바일앱 : 플레이스토어, 앱스토어에 올리기
- 웹사이트 : 서버에 올린 다음 실행(이용자들은 도메인으로 접근)
빌드(Build)
- 작업하는 프로젝트 파일들(소스코드, 라이브러리, 이미지파일, .. )을 출시하기 적합한 형태로 포장하는 일
컴파일 언어의 경우 컴파일 작업이 포함된다. - 목적
1. 특정 빌드 형태는 사용자가 바로 실행할 수 있는 하나의 파일로 제공한다.
(like 윈도우의 .exe파일)
2. 코드를 압축해서 전체 크기를 줄일 수 있다.
3. 컴파일되면서 다른 사람들이 가능한 코드를 못알아보도록 난독화 한다.
(cf. 인터프리터 언어는 코드가 노출된다.) - Build Tool
- 종류 : Maven, Gradle, ...

'ETC' 카테고리의 다른 글
| [웹사이트] 다양한 튜토리얼 페이지 (0) | 2023.06.08 |
|---|---|
| [shortcut key] 개발툴, 편집창 단축키 (0) | 2023.05.11 |
| [Postman] API 개발을 위한 HTTP 통신 테스트 (0) | 2023.04.13 |
| [Java Script] 유용한 라이브러리 모음 (0) | 2023.01.28 |
| [ERD cloud] 데이터 베이스 설계 프로그램 (0) | 2023.01.10 |
댓글