올바른 방향으로 가기 위한 글
1. 기본

기본적으로 우리가 어플리케이션을 사용할 수 있는 구조이다.
해당 그림은 추상화 수준을 나타낸다.
2. 키워드
아래의 6가지 키워드를 추출할 수 있겠다.
-네트워크 : OS간 통신
-OS : 커널 모드 명령어. 하드웨어와 상호작용
-JVM : 자바, 코틀린 등 컴파일 시 생성되는 바이트 코드를 OS 위에서 통합적으로 수행하기 위한 가상 머신
-JAVA(언어) : JVM 위에서 동작하는 언어.
-DB : 메인 메모리와 보조 기억장치를 활용하여, 데이터 집합을 관리
-SPRING : JAVA의 문법들을 추상화하여 구현된, 프레임 워크
3. 추상화
서버에서는 하드웨어를 사용한다.
0과 1을 사용한다는 것이다.
이러한 0과 1이라는 전기 신호를 추상화하여 OS 명령어 집합이 나온다.
즉, 하위부터 개발자가 개발하기 편하게 하기 위해, 추상화를 해 나감으로 SPRING이라는 프레임워크까지 만들어질 수 있었다.
복잡한 명령어 집합을 추상화->추상화->...과정을 거치는 것이다.

위처럼 하드웨어 명령어 집합들이 추상화되어, SPRING 규칙까지 구성되게 된다.
때문에, 우리는 하위의 명령어 집합이 어떻게 동작하는지 알아야, 정확하게 SPRING/JAVA를 통한 구현이 가능할 것이다.
하지만, 추상화는 단점이 존재한다.
"추상화는 복잡성을 숨기는 동시에 내부 구현까지 숨기기 때문에, 한계 또한 놓치고 지나갈 수 있다."
4. 알고리즘
명령어 집합을 사용하여, 추상화하기 위해서 명령어를 사용하는 순서/규칙이 필요하다.
이를 통해 문제를 해결하기 위해 순서/규칙을 정의한다.
즉, a+b 알고리즘은 a를 연산 레지스터에 적재, 해당 레지스터 주소에 접근해 b를 더하고, 그 값을 다시 메모리에 적재.
이러한 것들이 알고리즘인 것이다.
알고리즘들의 집합이 알고리즘이 될 수도 있다.
네트워크를 살펴보자. TCP라는 논리적 개념으로 추상화되어 있지만, 내부에는 순서 보장, 혼잡 제어 등 여러 알고리즘(개념)들이 포함되어 있다.
이러한 것들을 공부하는 것은 두가지 효과가 있겠다.
1. 정확한 동작을 알고, 추상화 집합을 제대로 사용할 수 있다.
2. 유사한 상황에서 문제해결을 위해 사용할 수 있다.
5. 공부 방향
5-1. 정확한 동작을 알고, 추상화 집합을 제대로 사용할 수 있다.
위에서 추상화는 한계를 놓치고 지나갈 수 있는 여지를 준다고 하였다.
즉, "무엇을 할 수 있는가?"와 "어디까지 할 수 있는가?(=한계)"를 알아야 한다.
한계를 해결하는 방식은 크게 두 가지가 있겠다.
5-1-1. 잡을 지-한계를 어플리케이션에서 보완
한계를 알고, 해당 한계를 어플리케이션 단에서 해결할 수 있다.
예를 들면,
TCP 패킷 손실 -> 재시도 로직 구현
DB 커넥션 한계 -> Connection Pool 튜닝
이러한 방법이 있겠다.
5-1-2. 전환할지-트레이드오프 기반 기술 선택 변경
한계를 알고 트레이드 오프를 고려하여 다른 선택지를 선택한다.
예를 들어,
TCP의 성능 문제 -> UDP 전환
Blocking I/O 한계 -> NIO/Netty 전환
이러한 방법이 있겠다.
5-2. 유사한 상황에서 문제해결을 위해 사용할 수 있다.
네트워크 TCP의 흐름 제어는 메시지 큐의 Back-Pressure와 유사한 개념이다.
패킷 재전송 알고리즘은 재시도 전략과 유사하다.
즉, 네트워크의 알고리즘은 개발 시에도 사용된다는 뜻이다.
6. 공부법
지금까지 공부를 해오며, 여러가지 문제점이 있었다.
물론, 이 방식은 계속해서 바뀔 수 있다.
6-1. 개념 잡기
개념을 파악하는 방식은 여러가지가 있겠다.
그 중 내가 선택한 방식은 다운 탑, 탑 다운 방식이다.
6-1-1. AI 및 학습 자료를 이용한 개념 학습
개념 암기 후 Chat GPT의 공부하기 기능을 통해 그 개념을 완전하게 내꺼로 만든다.
6-1-2. 해당 집합의 추상화는 뭐가 있는지 탐색
가장 윗 추상화 단계인 자바/스프링의 코드를 탐색한다.
6-2. 문제 가정
개념에서 나올 수 있는 문제를 가정한다.
이때, 기술 블로그나 AI를 적극적으로 활용해야한다.
스스로 가정하기에는 너무 부족하기 때문이다.
6-3. 문제 해결 및 활용
중요한 것은 구현이다.
결국, 사용해보지 않으면 내꺼로 만들지 못한다.
직접 사용해보며, 어떠한 문제가 발생할 수 있는지 생각한다.
이때, 다시 탑에서 다운으로 내려가며 추상화를 파헤쳐보는 복습을 한다.
6-4. 복습(가장 중요)
이 일련의 과정을 기록한 후 자주 읽는다.
'통합' 카테고리의 다른 글
| LLM의 특성 (0) | 2026.10.19 |
|---|---|
| Private Subnet EC2에서 SSM 연결하기 (0) | 2026.10.18 |
| CI/CD (0) | 2026.10.17 |