컴퓨터 마인드맵

Elena·2026년 1월 12일
post-thumbnail

앞으로도 공부할 것을 구분하기 위해 컴퓨터에 대해서 한번 정리를 해보았다. 내가 알아야할 것 위주로.

1. 컴퓨터의 구조

1-1. 하드웨어

  • CPU: 컴퓨터의 두뇌

-> 실제로 계산을 해주는 계산기로 보면 된다, 컴퓨터 사양을 볼 때 코어수와 클럭수가 높을수록 여러 작업을 동시에 하기 좋다.
ex) 6코어 12스레드 -> 코어: 일꾼 수, 스레드: 동시에 처리할 수 있는 작업 수
클럭은 숫자가 높을수록 한 번에 처리하는 속도 빠름

  • 메모리(RAM): 지금 쓰고 있는 작업 공간

-> 크롬, 워드, 카톡을 동시에 켜두면:
1)RAM이 그만큼 많이 필요해짐.
2)RAM이 부족하면 컴퓨터가 버벅거림

  • 저장장치(HDD, SSD): 파일을 오래 보관하는 창고

-> HDD (Hard Disk Drive): 옛날 식 느리지만 큰 창고 -> 안에 회전하는 디스크가 있음 ex) 옛날 노트북을 켜면 바탕화면이 뜨기까지 1~2분걸림
SSD(Solid State Drive): 최신 방식의 빠른 스마트 창고 -> 반도체 메모리로 저장(USB랑 같은 원리) ex) 요즘 노트북은 켜면 바탕화면이 10초만에 뜸

1-2. 소프트웨어

  • 운영체제(Windows, macOS, Linux): 컴퓨터 전체를 관리하는 관리자

나는 항상 운영체제가 헷갈렸다. 내가 맥북으로 개발을 할 때 나는 Linux shell로 서버에 접근을 했고 회사에서 쓰는 OS는 UbuntuOS라고 얘기를 들었다. 그럼 나는 무슨 운영체제를 쓰는거지..??
-> 내 노트북은 macOS 환경이고 회사 서버는 Ubuntu(Linux)OS로 비유로 설명하면

  • OS = 건물
  • 쉘 = 건물 안에서 쓰는 인터폰
  • 서버 접속 = 다른 건물에 전화 거는 것

이라고 한다. “저는 macOS 환경에서 개발하고,
SSH를 통해 Ubuntu(Linux) 서버에 접속해 작업합니다.” -> 이게 정확한 표현이라고.

  • 시스템 소프트웨어: 컴퓨터가 잘 작동하게 도와주는 기본 도구

컴퓨터가 ‘기본적으로 돌아가게’ 해주는 소프트웨어
(사용자가 직접 쓰는 앱이 아니라, 앱이 돌아갈 수 있게 바닥을 깔아주는 것)
-> “이게 시스템 소프트웨어인가?” 빠른 판별법
1) 사용자가 “작업”을 하기 위한 앱이 아니라 컴퓨터를 돌리기 위한 구성요소다
2) 하드웨어와 OS/앱 사이를 연결해준다 (드라이버)
3) 없으면 부팅이 안 되거나, 특정 기능/앱이 아예 실행이 안 된다
4) 화면에 자주 안 보이고 뒤에서 조용히 돈다

  • 응용프로그램(한글, 엑셀, 브라우저): 실제로 목적을 가지고 쓰는 프로그램

-> ex) 한글, 엑셀, 크롬
개발이란 결국 응용프로그램을 만드는 일이다(시스템 개발도 있지만 대부분은 응용프로그램 개발)

  • 모바일 앱: 스마트폰에서 쓰는 소프트웨어

-> 모바일 앱도 응용프로그램에 속한다. pc/웹/모바일로 나뉠뿐 본질은 같음
PC랑 웹은 어떻게 다를까?
pc는 컴퓨터에 설치해서 사용하고 웹은 인터넷에 접속해서 사용하는 것
ex) pc 응용프로그램: 메모장, 포토샵
웹 응용프로그램: 구글, 노션

2. 컴퓨터의 동작환경

2-1. 네트워크 & 인터넷

  • 인터넷 구조: 전 세계 컴퓨터가 연결된 큰 망

-> 집에서 유튜브를 보면 미국 서버에 있는 영상이 내 컴퓨터로 전송됨

  • LAN / WAN
    LAN: 집, 학교, 회사 안의 작은 네트워크
    WAN: 도시·나라를 넘는 큰 네트워크

-> 회사 프린터를 여러 사람이 같이 쓰는 것: LAN
해외 사이트 접속:WAN

  • IP 주소, DNS
    IP: 컴퓨터의 집 주소
    DNS: 주소록

-> DNS가 “naver.com = IP”로 바꿔줘서 바로 접속 가능

  • Wi-Fi, Bluetooth
    Wi-Fi: 인터넷 연결
    Bluetooth: 기기끼리 짧은 거리 연결

-> 무선 이어폰: Bluetooth
카페에서 노트북 인터넷: Wi-Fi

  • 클라우드 서비스: 내 컴퓨터가 아닌 인터넷 속 저장공간
  • AWS
  • VPC, IAM, RDS, S3

-> 구글 드라이브에 문서를 저장하면 집 PC, 회사 PC, 폰에서 다 열 수 있음.

내가 서버를 직접 사서 관리하지 않고, 인터넷으로 빌려 쓰는 컴퓨터 자원 서비스
온프레미스: 예전 방식으로 회사가 서버를 구매해서 서버실 만들고 고장나면 직접 수리하고 트래픽이 늘면 서버를 또 구매하는 방식
클라우드: 필요할 때 서버를 생성하고 안쓰면 삭제. 트래픽이 늘면 버튼 한번으로 확장하고 관리 대부분을 클라우드 업체가 대신하는 방식

클라우드는 서버만 빌리는게 아님
| 종류 | 의미 | 예 |
| ------ | -------- | ------------------ |
| 컴퓨팅 | 컴퓨터 | EC2 |
| 스토리지 | 저장공간 | S3 |
| 데이터베이스 | DB 서버 | RDS |
| 네트워크 | 트래픽 관리 | VPC, Load Balancer |
| 보안 | 계정·권한 관리 | IAM |

2-2. 데이터 & 정보

  • 데이터와 정보
    데이터: 그냥 숫자·문자
    정보: 의미 있는 결과

-> “85, 90, 70”: 데이터
“평균 82점”: 정보

  • 파일 형식: 파일의 종류

사진: JPG
문서: PDF, DOCX
영상: MP4

  • 데이터 저장 방식: 데이터를 어디에 저장하느냐

-> USB / 외장하드 / 클라우드 중 선택

  • 백업과 복구: 혹시 모를 사고 대비

ex) 노트북 고장 났는데 클라우드에 저장해 둔 덕분에 과제 살림: 백업
문제가 생겼을 때 백업해 둔 데이터를 다시 되살리는 과정: 복구

ex)DB 복구
1.DB 장애 발생
2.백업 파일(backup.sql) 확인
3.새 DB 생성
4.백업 파일 import

mysql -u root -p dbname < backup.sql

5.서비스 정상화

DB 복구는 보통 인프라/DBA 담당이긴 하지만 개발자도 해야할 것이 있을 것 같아서 찾아봤다.
1.어디까지 망가졌는지 영향 범위 분석 -> 이걸 알아야 복구 전략을 세움
2.복구시점 결정에 참여 ->
유실되면 치명적인 데이터가 뭔지, 복구 시점 뒤로 새로운 데이터들이 저장된적이 있었는지 등 비즈니스 로직을 아는 개발자가 결정해야 하는 사항
3.데이터 정합성 검증 -> 회원 수 맞는지, 주문 건수 맞는지 등 확인
4.애플리케이션 쪽 임시 대응 -> 서비스 일시 중단 페이지를 띄우거나 쓰기 요청을 막는 등 데이터가 더 망가지는 것을 막아야함
5.유실 데이터 보정 -> 복구 시점 이후 데이터가 사라졌다면 로그/외부 시스템 기준으로 유실된 데이터 재생성 스크립트 작성
6.재발 방지 설계 -> 트랜잭션 처리 개선, 잘못된 DELETE/UPDATE 방지
,소프트 삭제 도입,이중 백업 구조 제안,배치/관리자 기능에 권한 제한 등

소프트 삭제: 데이터를 실제로 지우지 않고, 삭제된 것처럼 표시만 하는 방식 <-> 하드 삭제

UPDATE users SET deleted = true WHERE id = 10;
  • ETL
  • 빅데이터
  • AI/ML

3. 컴퓨터의 안전과 책임

3-1. 신뢰

  • 개인정보 보호
  • 바이러스, 악성코드
  • 해킹
  • 테스트
  • 품질 관리

3-2. 윤리

  • 저작권
  • 라이선스
  • 디지털 시민의식

4. CS 기초

  • 알고리즘
  • 자료구조
  • OS
  • 네트워크
  • DB

5. 프로그래밍

  • Java, JavaScript
  • Node.js, JVM

6. 설계

  • SOLID
  • 디자인 패턴
  • DDD
  • Clean Code
  • Clean Architecture

7. 프레임워크

  • Spring
  • Express, NestJS

8.실행/배포

  • Docker
  • Kubernetes
  • CI/CD

9. 운영

  • Nginx
  • Redis
  • Kafka
  • 모니터링
profile
一切唯心造

0개의 댓글