# IT 및 개발 필수 용어 가이드 이 문서는 현대 IT 및 소프트웨어 개발 현업에서 자주 사용되는 핵심 용어들을 쉽게 설명하기 위해 작성되었습니다. --- ## 📌 용어 요약 요약표 | 용어 | 약자 풀이 | 한 줄 요약 | | :--- | :--- | :--- | | **LF / CRLF** | Line Feed / Carriage Return Line Feed | 텍스트 파일의 줄바꿈을 처리하는 운영체제별 방식 | | **RP (Repository)** | Repository | 소스 코드와 문서의 과거 변경 이력까지 모두 기록하는 저장소 | | **CI/CD** | Continuous Integration / Continuous Deployment | 코드 검증부터 서버 반영까지의 과정을 자동으로 처리하는 파이프라인 | | **LLM** | Large Language Model | 인간의 자연어를 이해하고 문장을 생성하는 거대 인공지능 모델 | | **CLI** | Command Line Interface | 마우스 대신 텍스트 명령어를 직접 입력하여 컴퓨터를 제어하는 환경 | --- ## 1. LF / CRLF (줄바꿈 방식) 텍스트 파일에서 **"여기서 줄을 바꾸고 다음 줄로 넘어가라"**라고 컴퓨터에게 지시하는 방식입니다. 과거 타자기 시절의 작동 방식에서 유래되었습니다. * **CR (Carriage Return):** 커서를 줄의 맨 앞으로 이동 (`\r`) * **LF (Line Feed):** 커서를 한 줄 아래로 이동 (`\n`) ### 운영체제별 줄바꿈 표준 * **LF (`\n`):** Linux, macOS, Git 시스템 기본 환경 * **CRLF (`\r\n`):** Windows 오퍼레이팅 시스템 > 💡 **현업 실무 팁** > Windows 환경에서 작성한 소스 코드(CRLF)를 Linux 서버(LF)로 그대로 가져가면, 눈에 보이지 않는 `\r` 문자 때문에 구문 에러가 발생하거나 쉘 스크립트가 오작동할 수 있습니다. 프로젝트 시작 전 팀 내 줄바꿈 설정을 통일하는 것이 좋습니다. --- ## 2. RP (Repository / 레포지토리) 개발자들 사이에서 흔히 **"레포"** 또는 **"저장소"**라고 부르는 프로젝트의 핵심 보관소입니다. * 단순히 소스 코드 파일만을 모아두는 일반 폴더와는 다릅니다. * 파일의 생성, 수정, 삭제 등 **과거 모든 변경 이력(버전)이 타임라인 형태로 기록·보관**되는 지능형 저장소입니다. * **로컬 저장소 (Local Repository):** 개발자 개인 PC에 존재하는 독립적인 작업 공간 * **원격 저장소 (Remote Repository):** GitHub, GitLab 등 네트워크상에 존재하며 팀원들과 코드를 공유하고 협업하는 중앙 공간 --- ## 3. CI/CD (지속적 통합 / 지속적 배포) 개발자가 코드를 수정하여 저장소에 반영한 순간부터, 이를 **자동으로 검증하고 실제 운영 서버에 안전하게 반영해 주는 자동화 시스템**을 의미합니다. * **CI (지속적 통합):** 여러 개발자가 각자 수정한 코드를 하나의 저장소에 모을 때, 시스템이 **자동으로 빌드하고 테스트(에러 검사)를 수행**하여 코드의 건전성을 상시 유지하는 과정입니다. * **CD (지속적 배포):** CI 단계를 통과하여 검증이 완료된 코드를 사용자가 사용할 수 있는 **운영 서버에 사람의 개입 없이 자동으로 반영(배포)**하는 과정입니다. > 💡 **시스템 비유** > 수동 배포가 음식을 사람이 일일이 검수하고 직접 배달하는 방식이라면, CI/CD는 **"조리 직후 센서가 자동으로 위생과 맛을 검사(CI) $\rightarrow$ 통과 즉시 드론이 고객에게 자동 배송(CD)"**하는 지능형 자동화 공정 라인과 같습니다. --- ## 4. LLM (Large Language Model / 거대 언어 모델) 인터넷상의 수많은 텍스트 데이터를 기반으로 학습하여, **사람의 언어(자연어)를 이해하고 문맥에 맞는 텍스트를 생성하도록 설계된 초대형 인공지능(AI) 신경망 모델**입니다. * 현재 대화 중인 시스템을 비롯해 ChatGPT, Claude 등이 모두 LLM을 기반으로 작동합니다. * 방대한 양의 언어 규칙과 지식을 내재하고 있어 문맥 파악, 문서 요약, 외국어 번역뿐만 아니라 **프로그래밍 소스 코드 작성 및 디버깅**과 같은 고도의 언어적 업무를 훌륭히 수행합니다. --- ## 5. CLI (Command Line Interface / 명령줄 인터페이스) 그래픽 화면과 마우스를 사용하는 대신, **텍스트 형태의 명령어를 직접 타이핑하여 컴퓨터 시스템을 제어하고 소통하는 인터페이스 방식**입니다. * **GUI (Graphic User Interface):** 일반적인 사용자 환경. 윈도우 창, 그래픽 아이콘, 마우스 클릭 중심의 조작. * **CLI (Command Line Interface):** 개발자 및 서버 관리자 환경. `cd /var/www`, `git commit` 같은 텍스트 기반 명령어 조작. ### 굳이 CLI를 사용하는 이유? 1. **고성능 및 자원 효율성:** 그래픽을 표현하는 데 필요한 메모리와 CPU 자원을 소모하지 않으므로 서버 운영에 최적화되어 있습니다. 2. **반복 작업의 자동화:** 자주 사용하는 일련의 명령어들을 쉘 스크립트(Shell Script) 파일로 묶어두면, 단 한 번의 실행으로 수백 가지의 복잡한 프로세스를 순식간에 자동 처리할 수 있습니다. # IT 용어 정리: 베어 메탈 (Bare Metal) ## 1. 개요 **베어 메탈(Bare Metal)**은 하이퍼바이저(Hypervisor) 같은 가상화 계층 없이, **물리적 하드웨어에 직접 운영 체제(OS)나 애플리케이션을 설치하고 구동하는 환경**을 뜻합니다. 다른 사용자와 하드웨어 자원을 공유하지 않고 통째로 독점하여 사용하기 때문에, 물리 서버가 가진 본연의 성능을 100% 온전히 발휘할 수 있는 단독 서버 환경입니다. --- ## 2. 베어 메탈 vs 가상 머신 (VM) 비교 | 구분 | 베어 메탈 (Bare Metal) | 가상 머신 (VM, Virtual Machine) | | :--- | :--- | :--- | | **자원 사용** | 물리 서버 1대를 단독으로 사용 (단독 격리 환경) | 1대의 물리 자원을 하이퍼바이저를 통해 분할하여 공유 | | **성능 및 안정성** | 다른 사용자의 간섭(**Noisy Neighbor**)이 없어 최고의 성능 및 고정적 안정성 유지 | 공유 자원이므로 타 사용자의 작업량(오버부킹 등)에 따라 성능 간섭 발생 가능 | | **제어 권한** | 하드웨어 레벨에 직접 접근하여 모든 제어 권한을 완전하게 통제 가능 | 하이퍼바이저(가상화 계층)를 거치므로 하드웨어 직접 제어 및 커스텀에 제한적 | | **구축 시간** | 물리적 장치 준비, 랙 마운팅 및 할당에 상대적으로 시간이 더 소요됨 | 이미 구성된 가상 환경 위에서 클릭 몇 번으로 즉시 생성, 확장 및 복제 가능 | | **비용 구조** | 하드웨어 전체를 독점 임대/구매하므로 초기 비용 및 유지 비용이 상대적으로 높음 | 필요한 만큼만 자원을 쪼개어 쓰고 사용한 만큼 지불하므로 비용 효율적 | --- ## 3. 주요 활용 시나리오 (Use Cases) * **데이터 집약적 워크로드 (Data-Intensive Workloads)** * 입출력(I/O) 병목 현상이 없어야 하는 대규모 관계형 데이터베이스(RDBMS), NoSQL, 빅데이터 분석 시스템(Hadoop 등), 고성능 컴퓨팅(HPC) 환경. * **엄격한 보안 및 규제 준수 (Security & Compliance)** * 가상화 환경의 자원 공유로 인한 보안 취약점을 차단하고, 물리적 인프라 격리가 필수적인 금융권 시스템, 공공기관, 기업의 핵심 기밀 데이터 처리 서버. * **자원 최적화 및 극도의 성능 요구 서비스** * 마이크로초(μs) 단위의 지연 시간(Latency)도 허용하지 않는 실시간 게임 서버, 고빈도 매매(HFT) 시스템, 대규모 트래픽 처리가 상시 필요한 서비스. --- ## 4. 베어 메탈 클라우드 (Bare Metal Cloud) 최근의 클라우드 생태계에서는 전통적인 호스팅 방식의 단점인 '느린 프로비저닝'을 개선하여, 물리 서버를 퍼블릭 클라우드처럼 **웹 콘솔 API를 통해 몇 분 만에 자동으로 할당받고 반납할 수 있는 '베어 메탈 클라우드'** 형태로 널리 제공되고 있습니다. * **국내 대표 서비스 예시:** * **카카오클라우드 (Kakao Cloud):** 베어메탈 서버 (고성능 쿠버네티스 노드 및 DB 전용 인프라 제공) * **삼성SDS (Samsung SDS):** 베어메탈 컴퓨팅 (기업용 미션 크리티컬 워크로드 최적화) --- ## 5 🔑 인증(Authentication)과 인가(Authorization)의 차이점 인증과 인가는 웹 보안 및 시스템 접근 제어의 핵심 개념입니다. 두 용어는 비슷해 보이지만 명확히 다른 역할을 수행합니다. --- ### 1. 인증 (Authentication) * **핵심 질문:** "당신은 누구입니까? (Who are you?)" * **개념:** 시스템에 접근하려는 사용자가 주장하는 본인이 맞는지 신원을 확인하고 검증하는 과정입니다. * **주요 방식:** * ID와 비밀번호 입력 * 생체 인식 (지문, Face ID) * 일회용 비밀번호 (OTP) * 소셜 로그인 (OAuth를 이용한 로그인 단계) * **실제 예시:** 회사 건물에 들어갈 때 사원증을 찍어 '내 신원'을 등록하거나, 웹사이트에 아이디와 비밀번호로 로그인하는 행위. --- ### 2. 인가 (Authorization) * **핵심 질문:** "당신은 무엇을 할 수 있습니까? (What are you allowed to do?)" * **개념:** 신원이 확인된(인증된) 사용자가 특정 리소스에 접근하거나 특정 기능을 수행할 권한이 있는지 확인하고 허용하는 과정입니다. * **주요 방식:** * 역할 기반 접근 제어 (RBAC: 관리자, 매니저, 일반 회원 등) * 권한 기반 접근 제어 (ABAC) * **실제 예시:** 사원증을 찍고 건물에 들어간 후, 일반 직원은 일반 사무실만 들어갈 수 있고 서버실은 관리자만 들어갈 수 있도록 권한을 제한하는 행위. --- ### 3. 한눈에 보는 비교 표 | 구분 | 인증 (Authentication) | 인가 (Authorization) | | :--- | :--- | :--- | | **목적** | 사용자의 신원 확인 | 접근 및 수행 권한 검증 | | **질문** | "너 누구니?" | "너 이거 할 자격 있어?" | | **선후 관계** | **먼저** 수행됨 (1단계) | 인증이 완료된 **후** 수행됨 (2단계) | | **IT 예시** | 웹사이트 로그인 성공 | 일반 회원이 관리자 페이지 주소 입력 시 접근 차단 | ### 4. JWT 기반 인증/인가 아키텍처 흐름 JWT 방식에서는 세션을 서버에 저장하지 않고, 클라이언트가 발급받은 토큰을 직접 증명서처럼 들고 다닙니다. ### 🔄 흐름도 (Flow) 1. **인증 요청 (로그인):** 클라이언트가 ID/PW를 서버에 전송합니다. 2. **토큰 발급:** 서버는 DB를 확인하여 신원이 검증되면, 사용자의 정보(Id, Role 등)를 담은 **Access Token(JWT)**을 생성하여 반환합니다. 3. **인가 요청 (API 호출):** 클라이언트는 권한이 필요한 API를 호출할 때, HTTP Header의 `Authorization: Bearer `에 토큰을 실어 보냅니다. 4. **토큰 검증 및 허가:** 서버는 토큰의 위변조 여부와 만료일을 검증한 뒤, 토큰 내부의 권한(Role)을 확인하여 요청을 승인하거나 차단합니다. --- #### 💡 요약 * **인증**은 문을 열고 들어가기 위한 **열쇠**입니다. * **인가**는 방 안에 들어간 후 특정 물건을 만질 수 있는 **허가증**입니다. --- ## 6 # 💡 프록시(Proxy)란? 쉽고 자세한 설명 **프록시(Proxy)**는 영어로 '대리'라는 뜻입니다. 컴퓨터 네트워크에서는 **클라이언트(사용자)와 서버(웹사이트) 사이의 '중개인' 역할**을 하는 서버를 의미합니다. 내가 직접 웹사이트에 접속하는 대신, 중간에 있는 프록시 서버가 내 요청을 대신 전달하고 결과를 받아옵니다. --- ### 🔄 프록시 서버의 작동 원리 * **직접 접속할 때:** `나` ➡️ `웹사이트` (웹사이트가 내 IP와 위치를 알 수 있음) * **프록시를 거칠 때:** `나` ➡️ **`프록시 서버`** ➡️ `웹사이트` (웹사이트는 프록시 서버가 접속한 것으로 인식함) --- ### 🛡️ 프록시를 사용하는 주요 이유 1. **익명성 및 보안 (IP 숨기기)** * 내 진짜 IP 주소를 숨기고 프록시 서버의 IP 주소로 활동할 수 있습니다. * 해커가 내 컴퓨터에 직접 접근하는 것을 막는 방화벽 역할을 합니다. 2. **차단 우회 및 지역 제한 해제** * 국가, 회사, 학교 등에서 특정 사이트 접속을 막아두었을 때 사용합니다. * 차단되지 않은 다른 지역의 프록시 서버를 거쳐 접속하면 우회가 가능합니다. 3. **속도 향상 및 대역폭 절약 (캐싱)** * 자주 방문하는 사이트의 이미지나 데이터를 프록시 서버에 임시로 저장(캐시)해 둡니다. * 다음 접속 시 저장된 데이터를 바로 불러오므로 로딩 속도가 빨라집니다. --- ### ⚙️ 프록시의 두 가지 종류 프록시가 사용자 측에 있느냐, 웹사이트 측에 있느냐에 따라 크게 두 가지로 나뉩니다. #### 1. 포워드 프록시 (Forward Proxy) * **위치:** 사용자(클라이언트) 앞에 위치합니다. * **용도:** 회사나 학교에서 내부 사용자들이 특정 유해 사이트에 접속하지 못하도록 통제하거나, 개인 사용자가 IP를 우회할 때 사용합니다. #### 2. 리버스 프록시 (Reverse Proxy) * **위치:** 웹사이트(서버) 앞에 위치합니다. * **용도:** 사용자가 몰릴 때 여러 대의 서버로 요청을 나누어 주는 역할(로드 밸런싱)을 합니다. 실제 서버의 IP를 숨겨주기 때문에 서버 보안에 필수적입니다. --- ### 🆚 프록시(Proxy) vs VPN 차이점 많은 사람이 프록시와 VPN을 비슷하게 생각하지만, 핵심 차이는 **'암호화'**에 있습니다. | 구분 | 프록시 (Proxy) | VPN | | :--- | :--- | :--- | | **핵심 역할** | 단순 요청 대리 및 중개 | 데이터 암호화 및 가상 터널 생성 | | **적용 범위** | 특정 웹 브라우저나 앱에만 적용 | 기기 전체의 인터넷 트래픽에 적용 | | **보안 수준** | 데이터가 암호화되지 않아 보안에 취약함 | 강력한 암호화로 해킹으로부터 안전함 | ---