컴퓨터 네트워크와 소프트웨어공학 학습 정리
OSI 7계층부터 코드 리뷰까지, 개발자가 반드시 알아야 할 핵심 개념
최근 컴퓨터 네트워크와 소프트웨어공학에 대한 학습을 진행하면서, 단순히 “인터넷이 연결된다”, “코드가 동작한다” 수준을 넘어 실제 서비스와 협업 개발에서 왜 이러한 개념들이 중요한지를 다시 느낄 수 있었다.
특히 이번 학습에서는 다음과 같은 주제를 중심으로 공부했다.
- 디지털 통신과 아날로그 통신
- OSI 7계층 모델
- IP 네트워크와 주소 체계
- CIDR 및 서브넷 개념
- TCP/IP 프로토콜
- 소프트웨어공학의 목적
- 폭포수 모델과 애자일
- 코드 리뷰와 클린 코드
- 코드 인스펙션
이번 글에서는 위 내용을 바탕으로, 개발자가 반드시 이해해야 할 핵심 개념들을 정리해보려고 한다.
1. 디지털 통신과 아날로그 통신
우리가 사용하는 인터넷, 스마트폰, 게임 서버, 스트리밍 서비스는 모두 디지털 통신 기반으로 동작한다.
과거에는 아날로그 통신이 중심이었다면, 현재는 대부분 디지털 방식이 사용된다.
디지털 통신의 대표적인 장점은 다음과 같다.
- 잡음에 강하다.
- 오류 검출 및 오류 정정이 가능하다.
- 암호화 적용이 쉽다.
- 데이터 저장 및 복원이 용이하다.
- 컴퓨터 시스템과 직접 연동하기 좋다.
특히 중요한 부분은 “오류 검출과 정정”이다.
예를 들어 네트워크 전송 중 데이터 일부가 손상되더라도, 디지털 통신에서는 이를 검출하거나 복구할 수 있다.
반면 아날로그 통신은 잡음이 섞이면 원본 품질 자체가 저하된다.
또한 오늘날 보안 기술의 핵심인 암호화 역시 디지털 데이터 기반이기 때문에 가능하다.
2. OSI 7계층 모델
네트워크를 공부하면 반드시 등장하는 개념이 바로 OSI 7계층 모델이다.
OSI(Open Systems Interconnection) 모델은 네트워크 통신 과정을 7개의 계층으로 나누어 설명한 구조이다.
OSI 7계층 구조
| 7계층 | 응용 계층(Application) |
| 6계층 | 표현 계층(Presentation) |
| 5계층 | 세션 계층(Session) |
| 4계층 | 전송 계층(Transport) |
| 3계층 | 네트워크 계층(Network) |
| 2계층 | 데이터 링크 계층(Data Link) |
| 1계층 | 물리 계층(Physical) |
물리 계층
실제 전기 신호나 케이블, 허브 같은 물리적인 연결을 담당한다.
예시:
- 랜선
- 광케이블
- 전기 신호
데이터 링크 계층
프레임 단위 전송을 담당한다.
대표 기능:
- MAC 주소 사용
- 오류 검출
- 흐름 제어
대표 장비:
- 스위치
네트워크 계층
라우팅과 IP 주소를 담당한다.
대표 프로토콜:
- IP
- ICMP
대표 장비:
- 라우터
인터넷에서 “어디로 데이터를 보낼지” 결정하는 핵심 계층이다.
전송 계층
종단 간 통신의 신뢰성을 보장한다.
대표 프로토콜:
- TCP
- UDP
TCP는 신뢰성을 보장하고,
UDP는 속도를 우선시한다.
게임 서버나 실시간 스트리밍에서는 UDP가 많이 사용되며,
웹 서비스에서는 TCP 기반 HTTP 통신이 주로 사용된다.
3. 데이터 링크 계층과 라우팅의 차이
학습하면서 헷갈리기 쉬운 부분 중 하나가 데이터 링크 계층과 네트워크 계층의 역할 차이였다.
데이터 링크 계층:
- 프레임 단위 처리
- MAC 주소 기반 통신
- 오류 검출
- 흐름 제어
네트워크 계층:
- IP 주소 사용
- 라우팅
- 경로 선택
즉, 라우팅은 네트워크 계층의 역할이지 데이터 링크 계층의 역할이 아니다.
이 개념은 면접에서도 자주 등장한다.
4. IP 주소와 CIDR
인터넷에서 모든 장치는 IP 주소를 가진다.
예시:
192.168.0.1
10.0.0.1
172.16.0.1
IP 주소는 네트워크 상에서 장치를 식별하기 위한 주소 체계이다.
CIDR이란?
CIDR(Classless Inter-Domain Routing)은 IP 주소를 효율적으로 관리하기 위한 방식이다.
예시:
10.10.0.0/22
여기서 /22는 네트워크 비트 수를 의미한다.
서브넷 마스크로 변환하면:
255.255.252.0
이러한 방식 덕분에 IP 주소를 더 유연하게 관리할 수 있게 되었다.
클래스 기반 주소 체계
과거에는 다음과 같이 클래스 기반으로 주소를 나누었다.
| A | 1~126 |
| B | 128~191 |
| C | 192~223 |
예를 들어:
10.x.x.x
는 클래스 A에 해당한다.
하지만 현재는 CIDR 방식이 일반적으로 사용된다.
5. TCP와 UDP
네트워크에서 가장 중요한 프로토콜 중 하나는 TCP이다.
TCP 특징:
- 연결 지향(connection-oriented)
- 신뢰성 보장
- 순서 보장
- 흐름 제어
- 혼잡 제어
특히 TCP는 데이터를 보내기 전에 3-way handshake 과정을 수행한다.
3-way Handshake
연결 과정:
- SYN
- SYN + ACK
- ACK
이 과정을 통해 클라이언트와 서버는 서로 연결 가능 여부를 확인한다.
웹 브라우저에서 사이트 접속 시에도 TCP 연결이 먼저 이루어진다.
UDP 특징
UDP는 TCP보다 단순하다.
특징:
- 비연결형
- 빠른 속도
- 신뢰성 보장 없음
대표 사용 예시:
- 게임
- 실시간 음성 채팅
- 스트리밍
실시간성이 중요한 경우 UDP가 유리하다.
6. 소프트웨어공학이란 무엇인가
소프트웨어공학은 단순히 “코딩”을 의미하지 않는다.
소프트웨어를 체계적이고 효율적으로 개발하기 위한 공학적 접근 방법이다.
핵심 목표:
- 생산성 향상
- 품질 향상
- 유지보수성 확보
- 비용 절감
- 일정 관리
즉, 좋은 소프트웨어를 안정적으로 개발하기 위한 모든 활동이 포함된다.
7. 소프트웨어 생명주기(SDLC)
소프트웨어는 다음과 같은 생명주기를 가진다.
- 요구사항 분석
- 설계
- 구현
- 테스트
- 배포
- 유지보수
이를 SDLC(Software Development Life Cycle)라고 한다.
실무에서는 개발보다 유지보수 비용이 훨씬 커지는 경우도 많다.
따라서 처음부터 유지보수를 고려한 설계가 중요하다.
8. 폭포수 모델
폭포수(Waterfall) 모델은 전통적인 개발 방법론이다.
단계를 순차적으로 진행한다.
대표 단계:
- Requirements
- Design
- Implementation
- Verification
- Maintenance
각 단계가 끝난 뒤 다음 단계로 이동한다.
폭포수 모델 장점
- 문서화가 체계적
- 관리가 쉽다
- 대규모 프로젝트에 적합
단점
- 변화 대응이 어렵다
- 요구사항 변경 비용이 크다
- 피드백 반영이 느리다
9. 애자일(Agile)
최근 대부분의 IT 기업은 애자일 방식을 사용한다.
애자일 핵심:
- 빠른 피드백
- 반복 개발
- 협업 중심
- 변화 대응
대표 방법론:
- Scrum
- Kanban
애자일이 중요한 이유
현대 서비스는 요구사항이 매우 빠르게 변한다.
예:
- 사용자 피드백
- 시장 변화
- 비즈니스 전략 수정
이러한 환경에서는 폭포수보다 애자일이 훨씬 유리하다.
10. 코드 리뷰와 코드 인스펙션
좋은 개발 문화에서 코드 리뷰는 필수이다.
코드 리뷰 목적:
- 버그 발견
- 품질 향상
- 지식 공유
- 유지보수성 향상
중요한 점은 “사람을 공격하는 자리가 아니라는 것”이다.
리뷰 대상은 개발자가 아니라 코드이다.
코드 인스펙션
코드를 체계적으로 검토하는 공식적인 절차이다.
주요 역할:
- Moderator
- Author
- Reviewer
효율적인 코드 인스펙션을 위해서는:
- 사전 코드 공유
- 충분한 검토 시간
- 명확한 목적
이 중요하다.
11. 클린 코드와 리팩토링
좋은 코드는 단순히 “동작하는 코드”가 아니다.
좋은 코드의 조건:
- 읽기 쉽다
- 유지보수하기 쉽다
- 의도가 명확하다
- 중복이 적다
리팩토링이 중요한 이유
프로젝트가 커질수록 코드 복잡도는 빠르게 증가한다.
리팩토링 없이 기능만 계속 추가하면:
- 버그 증가
- 개발 속도 감소
- 유지보수 난이도 상승
문제가 발생한다.
따라서 지속적인 리팩토링은 장기적으로 매우 중요하다.
12. 협업 개발에서 가장 중요한 것
이번 학습을 통해 느낀 가장 중요한 점은:
“개발은 혼자 하는 것이 아니다.”
라는 것이다.
네트워크 역시 계층 간 협력이 필요하고,
소프트웨어 개발 역시 팀 협업이 핵심이다.
좋은 개발자는 단순히 코드를 잘 짜는 사람이 아니라:
- 구조를 이해하고
- 협업을 잘하고
- 유지보수를 고려하며
- 지속적으로 개선하는 사람이다.
마무리
컴퓨터 네트워크와 소프트웨어공학은 단순 이론 과목이 아니다.
실제 개발 현장에서:
- 서버 통신
- API 설계
- 실시간 게임
- 클라우드 인프라
- 협업 개발
- 코드 품질 관리
모든 곳에서 직접 연결된다.
특히:
- OSI 7계층
- TCP/IP
- IP 주소 체계
- 소프트웨어 생명주기
- 애자일
- 코드 리뷰
이러한 개념들은 개발자의 기본 체력에 해당한다고 느꼈다.
앞으로도 단순히 “기능 구현”만이 아니라:
- 왜 이렇게 설계되는지
- 왜 이런 프로세스가 필요한지
- 왜 유지보수가 중요한지
를 계속 고민하면서 학습해야겠다고 느꼈다.
'pgms' 카테고리의 다른 글
| [20주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 89 (0) | 2026.05.31 |
|---|---|
| [20주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 88 (0) | 2026.05.26 |
| [19주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 86 (0) | 2026.05.21 |
| [19주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 85 (0) | 2026.05.21 |
| [19주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 84 (0) | 2026.05.18 |