소프트웨어

AnHyunDong·2025년 4월 9일
0

Infra

목록 보기
3/5
post-thumbnail

1. 운영체제

  • 운영체제(OS)는 하드웨어와 소프트웨어 간의 중재자
  • 사용자와 컴퓨터 하드웨어 사이에서 자원(메모리, CPU, 저장장치 등)을 효율적으로 관리
  • 프로그램이 실행되도록 자원하는 시스템 소프트웨어

1-1. 운영체제의 주요 역할

기능설명
프로세스 관리여러 프로그램(프로세스)들이 CPU를 효율적으로 사용하게 스케줄링
메모리 관리각 프로그램이 사용할 메모리를 할당하고 해제
저장장치 관리파일 시스템을 통해 데이터 저장 및 접근 제어
입출력(I/O)관리키보드, 마우스, 디스크, 네트워크 등 장치와의 통신관리
사용자 인터페이스 제공CLI OR GUI를 통해 사용자가 시스템과 상호작용
보안 및 권한 관리사용자 인증, 권한 제어 등 시스템 보호
  • 스케줄링(scheduling) : 다중 프로그래밍을 가능하게 하는 운영체제의 동작 기법

1-2. 운영체제의 구조

  • 커널 > OS의 핵심. 하드웨어 자원 관리와 시스템 호출 처리 담당
  • 시스템 호출 > 사용자 프로그램이 OS 기능을 요청하는 인터페이스
  • 쉘 > 명령어 해석기(CLI OR GUI)
  • 파일 시스템 > 데이터를 저장하고 조직하는 방식

1-3. 운영체제의 종류

분류기준종류 및 설명
대상 장치PC용 > Window, macOS, Linux
모바일 > Android, iOS
서버용 > Ubuntu Server, CentOS, Red Hat
사용자 수단일 사용자 OS, 다중 사용자 OS
작업 처리 방식단일 작업 OS, 다중 작업 OS
인터페이스CLI 기반 > Linux 서버, Window CMD
GUI 기반 : Windows, macOS

1-4. 대표 운영체제 비교

  • Windows
  • Linux
  • macOS
  • Android
  • iOS

2. 미들웨어

  • 운영체제와 응용 프로그램 사이에서 동작
  • 서로 다른 애플리케이션이나 시스템이 데이터를 주고받고 통신할 수 있도록 도와주는 소프트웨어 계층
  • 서버와 클라이언트 사이의 "중간 다리 역할" 소프트웨어

2-1. 미들웨어의 핵심 역할

역할설명
통신 지원네트워크 상의 애플리케이션들이 데이터를 주고받을 수 있도록 도와줌
데이터 변환/중재시스템간 형식이 다른 데이터를 변환하거나 정제
보안 관리인증, 권한 부여, 암호화 기능 제공
트랜잭션 처리여러 작업을 하나의 트랜잭션으로 묶어 처리, 일관성 유지
세션/상태 관리클라이언트와 서버 간의 연결 상태 유지
로드밸런싱/장애 대응시스템 부하 분산, 장애 발생시 우회 처리
  • 트랜잭션
    • 하나의 작업 단위(Unit of Work)로 여러개의 작업이 묶여 모두 성공하거나 모두 실패해야만 하는 일련의 작업 집합
    • 여러 시스템(ex. DB, 애플리케이션, 외부 API등)을 연결하여 여러 작업을 하나의 트랜잭션으로 묶어 처리
    • ACID > 원자성(Atomicity) : 작업이 전부 완료되거나 전부 취소되어야함, 일관성(Consistency) : 트랜잭션 전후 데이터의 상태가 항상 일관됨, 격리성(Isolation) : 동시에 실행되는 트랜잭션끼리 간섭하지 않음, 지속성(Durability) : 트랜잭션 완료 후 그 결과는 영구적으로 저장
  • 세션
    • 클라이언트 별로 서버에 저장되는 정보
    • 컴퓨터에 저장되던 쿠키와 다르게 서버에 저장됨
    • 서버가 종료되거나 유효기간이 지나면 사라짐
  • 로드밸런싱(부하분산)
    • 네트워크 또는 서버에 가해지는 부하 트래픽을 분산시켜주는 기술
    • 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법

2-2. 예제

    1. 사용자가 웹 브라우저로 로그인 요청 ->
    1. 웹 서버(Apache/Nginx)가 요청 수신 ->
    1. 미들웨어가 이 요청을 해석하고, 인증 서버에 전달하고, DB에 접근해서 결과 처리 ->
    1. 사용자에게 응답 반환

2-3. 미들웨어 종류

종류예시설명
웹 미들웨어Apache, Nginx, IIS웹 요청 처리, 정적 파일 서비스
애플리케이션 서버Tomcat, WebLogic, JBossJSP/Servlet, java 애플리케이션 실행
메시지 미들웨어Kafaka, RabbitMQ, ActiveMQ비동기 메시지 전달 및 큐잉
DB 미들웨어MyBatis, HibernateDB와 어플리케이션 간 데이터 매핑
트랜잭션 처리기Tuxedo, CICS여러 시스템간 일괄 처리 보장
API GatewayKong, Apigee여러 API를 통합 관리하고 인증, 로깅 등 수행
  • 메세지 큐
    • 분산된 환경에서 프로세스나 프로그램의 시스템간 데이터를 교환하기 위해 사용되는 통신 기법
    • 큐로 송신자(producer)와 수신자(consumer)간 비동기 통신 가능
  • 비동기 통신 > 요청을 보내더라도 응답을 언제 받아도 상관이 없다는 뜻, 결과가 주어지는데 시간이 걸리더라도 다른 작업이 가능함
  • 매핑
    • 서로 다른 데이터 소스나 포맷의 데이터를 변환하고 연결하는 프로세스
    • 서로 다른 구조의 데이터끼리 짝지어주는 작업, 한쪽 데이터를 다른쪽 구조에 맞게 변환하거나 연결해주는 방식
    • EX. A나라 주소 : 서울특별시 중구 다산로
      B나라 주소 : 우편번호 16575
      -> A나라의 주소 형식을 B형식으로 바꿔주는 작업 = 데이터 매핑

2-4. 미들웨어 VS 운영체제 VS 애플리케이션

종류설명
운영체제(OS)하드웨어를 제어하고 리소스 관리
미들웨어OS와 애플리케이션 사이에서 연결 및 통신 지원
애플리케이션실제 사용자 기능을 제공하는 프로그램(EX. 쇼핑몰, 메신저)

3. 가상화(Virtualization) 및 컨테이너(Container)


  • 가상화는 물리적인 컴퓨터 자원(CPU, 메모리, 스토리지, 네트워크)을 소프트웨어적으로 여러 개로 분할하여 가상의 컴퓨터(가상머신, vm)처럼 사용하는 기술
  • 하나의 물리 서버에서 여러 대의 가상 서버처럼 사용이 가능함



  • 컨테이너는 애플리케이션 실행에 필요한 코드, 라이브러리, 실행환경(런타임) 등을 하나로 묶어서 독립된 단위로 패키징하는 기술
  • 운영체제를 따로 설치하지 않고, 호스트 OS의 커널을 공유 및 독립된 환경처럼 실행

3-1. 가상화 장점

항목설명
자원 절약물리 서버 하나로 여러 VM을 운영 가능함
독립성VM간 영향이 없음(하나 죽어도 다른 VM은 정상적으로 운영 가능)
유연성VM 생성/삭제, 복제, 스냅샷 등 간편함
보안성서로 격리된 환경 제공

3-2. 컨테이너 장점

항목설명
경량화가상머신보다 가벼움(OS 불필요)
빠른 실행수초 내에 컨테이너 실행이 가능함
이식성어디서나 실행이 가능함(DEV -> PROD)
쉬운 유지보수애플리케이션 단위로 버전 관리 및 롤백 가능
확장상 우수쿠버네티스로 수십~수천개의 컨테이너 관리 가능
  • DEV(서버 개발 환경) > 서버에서 테스트 해볼 수 있는 환경
  • PROD(운영환경 : Production) : 실제 서비스를 위한 운영 환경

3-3. 가상화 vs 컨테이너 비교

항목가상화(vm)컨테이너
실행 단위OS 단위애플리케이션 단위
무게감무거움(전체 OS 포함)가벼움(OS 제외)
부팅 속도수십초~수분수초 이내
자원 효율낮음높음
보안 격리강함(완전한 OS 격리)상대적으로 약함(커널 공유)
대표 기술VMware, Hyper-V, KVMDocker, Kubernetes
  • 하이퍼바이저 > 단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어

4. 모니터링 및 관리도구

  • IT 인프라(서버, 네트워크, 애플리케이션 등)의 상태를 실시간으로 수집/분석하고, 이상징후를 탐지하거나 알림을 제공하는 도구
  • 시스템의 상태를 확인이 가능하고, 자동 대응이 가능함

4-1. 중요한 이유

항목이유
장애 조기 감지CPU 과부하, 디스크 풀 등의 위험 상황 빠르게 감지
알림 기능문제 발생시 이메일/슬랙/문자 등으로 알림 제공
트렌드 분석장기간 데이터를 기반으로 성능 변화 OR 병목 지점 분석
운영 자동화자동 재시작, 스케일링, 정책 적용 등 가능
보안 감시비정상적인 접근이나 이상 트래픽 탐지 가능

4-2. 주요 기능

항목이유
리소스 모니터링CPU, 메모리, 디스크, 데트워크 사용량 등 확인
로그 수집/분석애플리케이션 및 시스템 로그 수징, 필터링, 분석
알림(Notification)특정 조건 이상 시 이메일, 슬랙 등 알림
시각화 대시보드데이터를 시각적으로 확인 가능(그래프, 차트)
이벤트/장애 이력 관리과거 장애 기록과 대응 로그 보관
자동화 스크립트 연동이상 감지시 자동 조치 가능(재부팅 등)

5. 펌웨어

  • Firmware > 하드웨어를 제어하거나 동작시키기 위한 소프트웨어
  • 하드웨어 내부의 비휘발성 메모리(플래시 메모리, ROM 등)
  • 하드웨어가 동작하는 기본 프로그램

5-1. 예시

하드웨어펌웨어 역할
스마트폰부팅 초기화, 버튼/카메라 제어 등
공유기네트워크 연결, 포트 제어, 관리자 설정
TV 리모컨버튼 누름 -> 적위선 신호 전송 제어
프린터문서 데이터 받아서 프린터 헤드/모터 제어
SSD/HDD데이터 읽기/쓰기 방식 제어, 캐시 관리
BIOS/UEFIPC 부팅 시 초기 하드웨어 제어 및 OS 로딩

5-2. 펌웨어 VS 소프트웨어 VS 하드웨어

구분하드웨어펌웨어소프트웨어
정의기계 장치하드웨어를 제어하는 프로그램운영체제나 앱 등
위치회로, 부품하드웨어 내부 메모리디스크, 메모리
예시CPU, 메모리, 센서BIOS, SSD 제어, TV OSWindows, Android, Excel
업데이트불가가능(업그레이드 필요)쉽게 가능함

5-3. 펌웨어 특징

  • 비휘발성 > 전원을 꺼도 유지되는 메모리에 저장됨
  • 하드웨어 의존 > 특정 하드웨어에 맞게 설계
  • 실시간 제어 > 센서, 모터 등 하드웨어 동작을 빠르게 제어
  • 업데이트 가능 > 최신 기능 추가, 보안 패치 등을 통해 업데이트 제공
  • 내장형 시스템 필수 > IOT, 가전제품, 자동차 등 거의 모든 장치에 포함
profile
사진은 남아 추억이 메모는 남아 스펙이 된다

0개의 댓글