[커널아카데미] 백엔드 12기 16주차 회고

david1-p·2025년 7월 12일

회고

목록 보기
16/27

이번 주는 컴퓨터 구조, 네트워크, 백엔드 설계, AI 산업 구조에 대해서 배웠고, 황후순 강사님의 소방 콜봇 등 AI를 활용한 프로젝트들을 접할 수 있었고, 이론들을 조금이나 배울 수 있었다. 이번 주 부족한 공부들을 했는데, 자료구조, 디자인패턴, 자바의 정석, 파이썬, 모던자바인액션, 이펙티브 자바 등을 읽었다. 쇼핑몰 홈페이지 만들 때도 람다, 스트림이 많이 쓰이는 것을 보고 아직 부족하지만 더 열심히 공부를 해야겠다. 이번주 4~5시간씩 잠을 잤는데도 피곤한 것을 보면, 체력적 한계가 온 것이 아닌가? 라는 생각을 해본다. 스톱워치로 하루 순공시간을 찍어보았는데, 강의 시간을 제외하면 6~7시간 정도 찍는 것 같다. 집중을 더 해봐야겠다. 열심히 했지만, 다음주도 열심히 잘 하는 내가 되는 것을 상상해본다. 이번 주도 수고했어!

1. 포인터 크기와 메모리 주소의 한계

1) 개념 요약

  • 포인터(Pointer)는 메모리 주소를 저장하는 변수다.
  • 이 포인터가 가리킬 수 있는 주소의 범위는 CPU 아키텍처에 따라 다르다.
시스템 아키텍처포인터 크기최대 메모리 주소공간
x86 (32bit)4 byte (32bit)2³² = 약 4GB
x64 (64bit)8 byte (64bit)2⁶⁴ = 사실상 무제한 (물리적 제한은 존재)

2) 왜 중요한가?

  • 32bit 시스템에서는 프로세스당 최대 4GB 메모리만 할당 가능.
  • 대용량 데이터를 다루는 AI/서버/클라우드 환경에서는 64bit 필수.
  • OS와 응용 프로그램 모두 64bit를 지원해야 진정한 x64 환경.

2. SSH와 EVT

1) SSH (Secure Shell)

  • 원격 서버에 안전하게 접속하는 프로토콜.
  • ssh user@hostname 명령으로 접속.
  • RSA, ECDSA 등의 공개키 암호화 기반 인증 제공.
  • 용도: 서버 관리, 원격 명령 실행, Git SSH 키 인증

2) EVT (Event Tracing)

  • 소프트웨어나 시스템이 발생시키는 이벤트를 기록하는 기술.
  • 운영체제에서 이벤트 로그를 통해 시스템 상태를 추적.
  • Windows에서는 ETW(Event Tracing for Windows)라는 기능 제공.

3. 배치 작업, 스케줄링, 로그 관리

1) 배치 작업(Batch Job)이란?

  • 사용자의 직접 명령 없이 정해진 시간에 실행되는 작업
  • 예: 매일 밤 1시에 데이터 백업, 로그 정리, 통계 집계

2) 스케줄러 예시

  • Spring Scheduler
@Scheduled(cron = "0 0 1 * * ?") // 매일 1시

3) 로그 관리

  • 실시간 로그 모니터링 도구: ELK Stack (Elasticsearch + Logstash + Kibana), Grafana Loki
  • 로그는 운영/장애/보안 대응의 핵심

4. NLP → NLU → 정답 추론 → 문맥 분석 → API 연동

1) 전체 흐름

NLP (자연어 처리): 언어의 기본 구조를 분석 (형태소, 문장 분석 등)
NLU (자연어 이해): 질문의 의미/의도 파악
정답 추론: 질의와 데이터 기반으로 최적의 응답 생성
문맥 유지: 멀티턴 대화, 이전 질문 기반 응답 생성
외부 API 연동: 외부 DB, 서비스와 연결

2) 예시

“서울 날씨 알려줘”

NLU: 위치 = 서울, 요청 = 날씨
정답 추론: OpenWeatherMap API 호출
API 연동: GET /weather?q=Seoul


5. CQRS (Command Query Responsibility Segregation)

1) 개념

  • 명령(Command): 데이터를 변경하는 작업 (쓰기)
  • 질의(Query): 데이터를 조회하는 작업 (읽기)

2) CQRS 원칙

  • 읽기와 쓰기를 물리적으로 분리
  • 쓰기 작업은 비동기 큐로 처리
  • 조회는 캐시나 별도 DB에서 처리 → 성능 최적화 + 동시성 처리

3) 적용 예시

POST /order (Command) → 메시지 큐로 전달
GET /orders (Query) → 조회 전용 DB에서 읽기

6. 인덱스 vs 역인덱스

구분설명예시
인덱스(Index)테이블의 특정 컬럼에 대한 정렬된 목록 (B-Tree)name, email
역인덱스(Inverted Index)단어 → 문서의 맵핑 (검색엔진에서 주로 사용)“hello” → 문서 A, C, F

1) 인덱스 핵심

  • 일반 인덱스는 테이블의 검색 속도 향상
  • 역인덱스는 전체 문서 중 특정 단어가 포함된 문서 빠르게 찾기 (ex. Elasticsearch)

7. Lifecycle Interface

1) 생명주기 관리란?

객체가 만들어지고, 사용되고, 소멸되는 일련의 과정을 제어하는 패턴

2) Spring의 예

public class MyBean implements InitializingBean, DisposableBean {
  public void afterPropertiesSet() { ... } // 초기화
  public void destroy() { ... }           // 소멸
}
  • @PostConstruct, @PreDestroy 어노테이션으로도 대체 가능
  • 리소스 할당, 해제, 연결 설정, 캐시 초기화 등에 사용

8. 인조 식별자 사용 사례

1) 정의

  • 실제 의미 없는 숫자나 UUID 기반 식별자
  • 반대: 주민번호, 이메일 등 실제 데이터를 PK로 사용하는 본질 식별자

2) 사용하는 경우

(1) 테이블 통합 시 PK 충돌 방지
(2) 복합키 대신 단순키로 관리
(3) 개인정보 노출 방지 (본질 식별자 암호화)

3) 실전 예시

CREATE TABLE Member (
  member_id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 인조 식별자
  name VARCHAR(50),
  ssn CHAR(13) -- 주민번호는 암호화 대상
);

9. for문 vs 하드코딩 연산 성능

1) CPU 입장에서의 비교

for(int i=0; i<3; ++i) xyz[i] = i; // 루프 계산 + 배열 접근 → 총 10회 연산
xyz[0]=0; xyz[1]=1; xyz[2]=2;     // 연산 3회

2) 결론

  • 정해진 배열 크기일 경우 → 하드코딩이 더 빠름
  • 배열 크기를 모를 경우 → for문이 유일한 방법

단, 가독성과 유지보수성도 고려해야 해서 선택해야 한다!


10. AI 개론 (강병호 강사님 특강)

1) 퍼셉트론 (Perceptron)

  • 인공 뉴런 모델 (1957년, 로젠블랫)
  • 입력값 × 가중치 → 임계값 넘으면 1, 아니면 0

2) 트랜스포머 (Transformer)

  • 2017년 등장, BERT, GPT 계열 모델의 핵심
  • 입력 전체를 병렬적으로 처리, 문맥 유지에 강점

3) 손실 압축 (Lossy Compression)

  • 일부 정보 손실을 감수하고 패턴을 압축 학습
  • 높은 일반화 성능을 얻기 위한 트레이드오프

11. 필수 기술 개념 정리

개념설명
MCP (Model Context Protocol)모델 상태와 맥락 정보를 구조화하여 처리 흐름을 제어
A2A (Agent-to-Agent)에이전트 간 직접 메시지 송수신 구조
LangChainLLM 기반 앱 구축을 돕는 프레임워크 (Chain, Tool, Memory 등 제공)
NAT (Network Address Translation)사설 IP → 공인 IP로 변환하여 인터넷 통신 가능케 함
OSI 7계층네트워크 구조의 계층적 모델: 물리-데이터링크-네트워크-전송-세션-표현-응용
폰 노이만 구조명령어 실행의 기본 흐름: FETCH → DECODE → EXECUTE

1) MCP (Model-Context-Protocol)

(1) 정의

MCP는 LLM 기반 시스템 설계에서 모델(Model), 문맥(Context), 프로토콜(Protocol)을 명확히 구분하고 관리하는 구조적 원칙이다.

(2) 구성 요소

구성 요소설명
ModelLLM (예: GPT-4, Claude 등) 또는 도메인 특화 모델
Context입력 프롬프트, 사용자 대화 이력, 시스템 규칙 등
Protocol모델 간 상호작용 방식 또는 워크플로우 제어 규칙

(3) 왜 필요한가?

  • 프롬프트만으로 모든 맥락을 처리하기엔 복잡한 애플리케이션 구성이 어려움.
  • 에이전트 체계나 멀티턴 시스템에서 역할 분담과 대화 흐름 통제가 필수.
  • 복잡한 대화형 시스템에서는 상태(상황) 추적이 가장 중요하다.

(4) 실제 적용 예시

  • LangGraph + LangChain: 모델 상태 전이 기반의 Context-aware Agent
  • OpenAI Function calling: 프로토콜 형태의 명령 지정 (tool_choice, function_call)

2) A2A (Agent-to-Agent Communication)

(1) 정의

A2A는 에이전트들이 직접 서로 통신하며 협업할 수 있는 구조 또는 패턴이다. 일종의 멀티에이전트 시스템(MAS)의 기초.

(2) 동작 방식

  • Agent A가 문제의 일부를 해결하고, 그 결과를 Agent B에 전달.
  • B는 해당 입력을 바탕으로 후속 작업 수행.
  • 모든 Agent는 자신만의 역할(role)기억(memory)을 가짐.

(3) 예시 구조

sequenceDiagram
  participant AgentA
  participant AgentB

  AgentA->>AgentB: "날씨 요약 완료 → 여행 일정 추천 요청"
  AgentB-->>AgentA: "여행 추천 완료 → 예산 계획 요청"

(4) 사용 목적

  • 하나의 거대한 LLM에 모든 기능을 넣는 대신, 전문화된 LLM을 협업하게 하여 효율적 문제 해결 가능.
  • 복잡한 업무(여행 설계, 금융 상담 등)를 분업 처리.

3) LangChain

(1) 정의

LangChain은 LLM 기반 애플리케이션을 쉽게 만들 수 있도록 도와주는 Python 기반 프레임워크이다.

(2) 주요 구성 요소

구성 요소설명
Chain여러 LLM 호출 및 논리 흐름을 순차적으로 연결
Tool외부 API, 계산기, 파일시스템 등 LLM이 호출할 수 있는 기능
Memory이전 대화의 문맥을 저장하는 객체
Retriever벡터 DB에서 유사한 문서 검색
Agent주어진 도구를 통해 상황에 따라 스스로 결정을 내리는 LLM 구조

(3) 예시

  • QA 시스템: 사용자의 질문 → 검색 → 요약 → 응답 생성
  • RAG: 사용자 질의 → 문서 검색 (Retriever) → LLM 요약

4) NAT (Network Address Translation)

(1) 정의

NAT는 사설 IP 주소를 공인 IP 주소로 바꾸어주는 네트워크 기술이다.

(2) 동작 방식

  • 내부 네트워크: 192.168.x.x와 같은 사설 IP 사용
  • 인터넷 통신 시, NAT 장비가 사설 IP ↔ 공인 IP 매핑

(3) 활용 이유

  • 사설 IP 재사용 가능 → IP 고갈 문제 해결
  • 보안 향상: 내부 구조 노출 방지

5. OSI 7계층

(1) 정의

컴퓨터 간 통신이 어떻게 이루어지는지를 설명하기 위한 추상화된 네트워크 모델. 각 계층은 서로 독립적으로 구성되어 있음.

(2) 계층별 정리

계층이름설명대표 프로토콜
7Application사용자에게 가장 가까운 계층 (브라우저, 앱)HTTP, FTP
6Presentation데이터 표현 방식 처리 (암호화, 인코딩)JPEG, ASCII
5Session세션 관리, 연결 유지TLS, NetBIOS
4Transport종단 간 연결 및 흐름 제어TCP, UDP
3NetworkIP 주소 및 경로 결정IP, ICMP
2Data LinkMAC 주소 기반 전송Ethernet
1Physical전기 신호/광신호 수준케이블, NIC

(3) 실무 연관

  • 트래픽 분석, 보안 필터링 시 필수
  • TCP/IP는 OSI보다 단순한 4계층 구조지만 OSI는 학습용 모델로 유용

6. 폰 노이만 구조

(1) 정의

현대 컴퓨터의 기초 아키텍처. 명령어와 데이터를 같은 메모리 공간에서 관리하는 구조.

(2) 명령 처리 흐름

  • FETCH: 명령어 읽기 (메모리 → CPU)
  • DECODE: 해석 (어떤 연산인지 파악)
  • EXECUTE: 실행 (ALU 등에서 계산)

(3) 폰 노이만 병목 현상

  • CPU와 메모리 사이 버스 병목 발생 → 데이터 전송 속도 한계
  • 해결법: 캐시 메모리, 하버드 구조(명령/데이터 분리)
메모리 <--> 제어장치 <--> 연산장치
             ↕
           레지스터
             ↕
           입출력 장치
profile
DONE IS BETTER THAN PERFECT.

0개의 댓글