Shodan은 인터넷에 연결된 다양한 IoT 기기들을 검색하고 분석할 수 있는 도구이다. 이를 통해 웹캠, CCTV, 네트워크 프린터, 산업제어시스템 등 다양한 기기들의 보안 취약점을 파악하고, 실시간으로 접근할 수 있는 정보들을 열람할 수 있다. 이번 시간에는 Shodan을 통해 검색할 수 있는 주요 IoT 기기들과 각 기기의 특징을 살펴보겠다.

 

1. CCTV

 

  • 특징: 감시용 카메라. 아날로그 CCTV가 아닌 네트워크 연결형 카메라.
  • 보안 위험: CCTV 영상 유출, 관리 부실로 인한 해킹 위험. 개인정보 유출 가능성 있음.
  • 대표적 피해 사례: 영상 정보 유출 및 해킹 사례 발생.

 
 
검색 키워드: port:80 has_screenshot:true  (해당 ip를 웹브라우저 주소 창에 검색하면 이동한다)

  • 포트 554는 **RTSP (Real-Time Streaming Protocol)**로, 웹 브라우저로 직접 접속할 수 없다.
  • has_screenshot:true는 Shodan이 캡처한 화면이 있는 결과만 표시한다.
  • RTSP 포트로 접속이 불가능하므로, HTTP 80 포트로 변경하여 접근할 수 있다. 이를 통해 CCTV 영상에 접근할 수 있다.

2. WebCam, IP Cam

  • 특징: 화상 채팅이나 인터넷 방송 등으로 사용되는 카메라. 네트워크를 통해 직접 연결되는 웹캠에 대한 검색어는 다양한 종류가 존재함.
  • 보안 위험: 사생활 침해 우려가 큼. 불법적으로 웹캠 화면을 엿보거나 유출될 수 있음.
  • 대표적 피해 사례: 가정집에서 설치된 IP 카메라 해킹 사례가 보도된 바 있음.

 

IP 카메라

  • 검색 키워드: title:"IPCam Client" port:80


    • 예를 들어, Foscam과 같은 브랜드에서 기본 비밀번호를 사용하는 웹캠은 쉽게 접근할 수 있을 수 있다.(사용자가 비밀번호를 안 바꿨다면)

 

WebCam

  • 검색 키워드: title:"webcam" has_screenshot:true



    • 이 검색어를 통해 웹캠의 라이브 영상을 확인할 수 있다. Shodan은 각 기기의 화면을 캡처하여 결과로 표시하므로, 이를 통해 라이브 영상을 확인할 수 있다.

 
 
 
 

3. Network Printer

 

  • 특징: 네트워크에 연결되어 모든 사용자들이 함께 사용할 수 있는 프린터.
  • 보안 위험: 프린터 해킹으로 문서 엿보기, 인쇄 기록 훔쳐보기 등. 프린터 하드디스크에서 이전 인쇄 기록을 볼 수 있는 경우도 있음.
  • 대표적 피해 사례: 프린터 해킹 사건으로 인해 문서 정보가 유출된 사례 있음.

 
 

  • HP 프린터 검색 키워드: "HP-ChaiSOE" port:80
  • Xerox 프린터 검색 키워드: ssl:"Xerox Generic Root"

 
일부 프린터는 기본 비밀번호가 걸려 있지 않거나, 취약한 비밀번호를 사용하여 보안에 취약할 수 있다. 예를 들어, 엡손과 캐논은 비밀번호가 걸려 있지만, 다른 프린터는 보안에 취약한 경우가 있다. Server: printer 포트 80을 통해 확인할 수 있다.

4. 산업 제어 시스템 (ICS)

  • 특징: 산업 시설을 제어하는 시스템으로, 네트워크 기술을 통해 외부와 연결되며 생산성 향상에 기여함.
  • 보안 위험: 해킹 시 산업 기밀 유출, 시설 셧다운, 재정적 피해, 국가 시설을 대상으로 한 테러 가능성.
  • 사례: 과거 산업 제어 시스템이 해킹되어 큰 피해를 본 사례가 있음.

1. Nordex 관련 검색

  • Nordex는 독일에 본사를 둔 풍력 발전기 제조업체.
  • 검색한 결과, ICS(산업제어시스템) 관련 장비에서 실행 중인 시스템이 나타남.
  • 이 시스템은 로그인으로 컨트롤 가능한 상태

2. ICS 검색

  • ICS(산업제어시스템)와 관련된 장비를 검색하는 과정에서 특정 제품이나 시스템에 대한 정보를 찾음.
  • ICS 관련 시스템은 보통 특정 산업 장비에 대한 제어를 담당하는 시스템으로, 해당 시스템은 리눅스 기반의 모니터링 대시보드를 활용하는 것으로 추측됨.

 


3. 제품 가이드북을 활용한 로그인 UI 우회 방법

  • 목적: 로그인 UI 우회 방법 탐색
  • 방법:
    1. ICS(산업제어시스템) 회사 이름을 Shodan에서 검색
    2. 검색 결과에서 제품(프로덕트) 이름을 확인
    3. 해당 제품 이름을 구글에서 검색하여 가이드북을 찾음
    4. 가이드북을 분석하여 로그인 UI를 우회할 수 있는 방법을 탐색

4. Siemens 제품의 VNC 서버 취약점 분석(raw data 분석)

  • top automation vendors를 검색하면 Siemens 나타났으며, Siemens 제품과 관련된 ICS 정보를 검색해봤다.
  • Siemens 제품과 관련된 데이터를 추가 검색
  • Siemens의 제품과 관련된 데이터를 쇼단에서 이미지 탭에서 검색하고, 그 내부의 raw data를 분석한 결과 VNC 서버와 관련된 정보가 나타남.

 

  • 발견된 취약점:
    • 인증이 비활성화된 VNC 서버가 존재하여 외부 공격자가 쉽게 접근할 수 있음
    • VNC 서버의 보안이 취약할 경우 공격자가 시스템에 접근할 가능성이 높음
  • 기술적 제한:
    • 웹브라우저는 VNC 프로토콜(RFB)을 지원하지 않음
    • VNC 서버에 접속하려면 전용 VNC 클라이언트가 필요함

 

5. POS 시스템

 
 

  • 특징: 상점에서 판매 거래를 처리하는 시스템으로, 결제 카드 정보와 고객 데이터를 처리하는 중요한 역할을 한다. POS 시스템은 카드 결제뿐만 아니라, 재고 관리, 매출 기록 등의 기능을 수행한다.
  • 보안 위험: 카드 정보 및 고객 데이터를 처리하기 때문에 해킹 시 중요한 개인 정보가 유출될 수 있다. POS 시스템 해킹을 통해 신용카드 정보, 결제 내역, 고객 정보 등이 유출될 수 있으며, 이를 통해 금융 사기 및 데이터 도용이 발생할 수 있다.
  • 대표적 피해 사례: POS 시스템이 해킹되어 카드 정보가 유출된 사건이 발생한 바 있으며, 특히 대형 상점 체인에서 발생한 사례가 보도된 적 있음. 해커는 POS 단말기를 통해 결제 정보를 훔쳐 불법적인 거래를 시도하기도 한다.

 

  • pos 검색 키워드: pos

 

  • Shodan을 통해 POS 시스템의 로그인 화면을 확인할 수 있다. 일부 취약한 POS 시스템은 보안에 취약하여 개인정보 유출의 위험이 있다.

 

개인정보 유출 원인

  1. 취약한 기본 설정: 많은 IoT 기기가 기본 비밀번호나 설정을 그대로 사용하여 보안에 취약하게 노출된다.
  2. 소프트웨어 취약점: 오래된 소프트웨어를 사용하거나 보안 패치가 적용되지 않은 경우 해킹에 취약할 수 있다.
  3. 인증 및 암호화 부재: 일부 IoT 기기는 인증 기능이 없거나 암호화되지 않은 통신을 사용하여 개인정보 유출 위험이 있다.
  4. 네트워크 보안 취약점: 공유기나 방화벽 설정이 취약한 경우, 외부 공격자가 내부 네트워크에 접근하여 IoT 기기를 공격할 수 있다.

보안 강화 방안

  1. 기본 비밀번호 변경: 모든 IoT 기기의 기본 비밀번호를 강력한 비밀번호로 변경해야 한다.
  2. 최신 소프트웨어 유지: IoT 기기의 소프트웨어를 최신 버전으로 유지하고 보안 패치를 정기적으로 적용해야 한다.
  3. 강력한 인증 및 암호화: 인증 기능을 활성화하고 암호화된 통신을 사용하여 개인정보를 보호해야 한다.
  4. 네트워크 보안 강화: 공유기와 방화벽 설정을 강화하여 외부 공격으로부터 네트워크를 보호해야 한다.

결론

Shodan을 활용하여 IoT 기기의 보안 취약점을 미리 파악하고 적절한 보안 조치를 취하는 것이 중요하다. Shodan에서 검색할 수 있는 IoT 기기들은 CCTV, 웹캠, IP 카메라, 네트워크 프린터, 산업 제어 시스템(ICS) 등이 있다. 각 기기는 기본 설정, 소프트웨어 취약점, 인증 및 암호화 부재 등의 이유로 보안에 취약할 수 있으며, 이를 해결하기 위한 보안 강화 방안을 적용하는 것이 중요하다.
 
참고
https://itstudycube.tistory.com/29

28주차 과제 - 침해대응 & CERT 과정 (5)

침해대응 & CERT 과정을 진행합니다. 지난 과정에서 IoT와 Shodan에 대하여 알아보았습니다. 이번 시간에는 Shodan을 통하여 탐색할 수 있는 대표적인 기기들에 대하여 알아보도록 하겠습니다. 과제

itstudycube.tistory.com

https://youtu.be/bZUnQR4bdT8?si=6oqM7OKZ2FS5zcHP

https://www.youtube.com/watch?v=Stxrz0timCg
 

'Security > CERT' 카테고리의 다른 글

사물인터넷(IoT)과 Shodan  (0) 2025.02.19
구글해킹을 통한 취약 • 노출정보 검색  (0) 2025.02.15
구글해킹  (0) 2025.01.31
침해 대응 & CERT  (0) 2025.01.18

Availability(고가용성) & Scalability(확장성) 정리

Availability(고가용성)

  • 정의: 시스템 또는 애플리케이션이 항상 작동 가능하고, 장애 발생 시에도 지속적으로 서비스가 제공될 수 있는 능력.
  • 특징
    • 일반적으로 **수평 확장(horizontal scaling)**과 함께 적용됨.
    • **다중 가용 영역(Multi-AZ)**을 활용하여 최소 2개 이상의 데이터 센터에서 운영함.
    • RDS Multi-AZ 배포는 패시브 방식(장애 발생 시 자동으로 다른 AZ로 전환).
    • EC2 Auto Scaling Group로드 밸런서를 사용하여 여러 AZ에 걸쳐 애플리케이션을 실행함​.

Scalability(확장성)

  • 정의: 시스템이 증가하는 부하를 처리하기 위해 적절하게 확장될 수 있는 능력.
  • 종류
    • 수직 확장(Vertical Scaling)
      • 단일 인스턴스의 크기를 증가시켜 성능을 향상시키는 방법.
      • 예: t2.micro → t2.large 업그레이드.
      • RDS, ElastiCache 같은 AWS 서비스에서 사용됨.
      • 하드웨어 한계로 인해 확장 가능 범위가 제한됨​.
    • 수평 확장(Horizontal Scaling)
      • 애플리케이션 인스턴스를 여러 개 추가하여 성능을 향상시키는 방법.
      • 분산 시스템 환경에서 자주 사용되며, AWS EC2 Auto Scaling Group로드 밸런서로 구현 가능.
      • 클라우드 환경에서 매우 일반적인 방식​.

고가용성과 확장성의 차이점

  • 고가용성: 장애 발생 시에도 시스템이 지속적으로 운영될 수 있도록 설계.
  • 확장성: 부하 증가에 대응하여 시스템을 확장할 수 있도록 설계.
  • 예를 들어 콜센터를 운영할 때:
    • 고가용성: 뉴욕과 샌프란시스코 두 개의 센터를 운영하여 한 곳에 장애가 발생해도 계속 운영 가능.
    • 확장성:
      • 수직 확장: 기존 직원(오퍼레이터)에게 더 많은 콜을 받을 수 있도록 장비를 업그레이드.
      • 수평 확장: 더 많은 직원을 추가하여 콜을 처리​.

 AWS에서의 적용 예시

  • EC2 고가용성 & 확장성
    • 수직 확장: 인스턴스 크기 조정 (예: t2.nano → u-12tb1.metal).
    • 수평 확장: Auto Scaling Group & Load Balancer 사용.
    • 고가용성: Multi-AZ Auto Scaling Group & Load Balancer 적용​.
  • RDS 고가용성 & 확장성
    • 고가용성: RDS Multi-AZ 배포로 장애 발생 시 자동 전환.
    • 읽기 확장성(Read Scalability): RDS Read Replica를 사용하여 읽기 성능 향상​.
  • EFS(Elastic File System)
    • 다중 AZ 지원으로 고가용성 보장.
    • 자동 크기 조정으로 확장성 제공​.

로드 밸런싱 (Load Balancing) 정리

로드 밸런서란?
로드 밸런서는 트래픽을 여러 서버(EC2 인스턴스)로 분산하여 부하를 관리하는 서비스이다. AWS에서는 Elastic Load Balancer(ELB)를 제공하며, 여러 유형이 존재한다.

 

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*uM9hKH4udB8MqTqHMFRYzQ.png


로드 밸런서를 사용하는 이유

    • 부하 분산 → 여러 서버에 트래픽을 분산하여 과부하 방지
    • 단일 접속 지점 제공 → DNS를 통해 접근 가능
    • 자동 장애 감지 및 복구 → 인스턴스 장애 발생 시 정상 인스턴스로 트래픽 우회
    • 정기적인 헬스 체크 수행 → 인스턴스의 정상 상태 여부를 모니터링
    • SSL 종료 (HTTPS 처리) → 보안 강화를 위해 HTTPS 트래픽을 ELB에서 처리
    • 세션 유지(Stickiness) 지원 → 사용자가 동일한 인스턴스로 연결될 수 있도록 설정 가능
    • 고가용성 지원 → 여러 가용 영역(AZ)에서 트래픽을 분산하여 가용성을 높임
    • 퍼블릭 트래픽과 프라이빗 트래픽을 분리 가능

헬스 체크란?

  • 헬스 체크(Health Check)는 로드 밸런서가 백엔드 EC2 인스턴스의 정상 상태를 확인하는 기능이다. 헬스 체크를 통해 비정상적인 인스턴스를 감지하고, 트래픽을 정상 인스턴스로 우회할 수 있다.

헬스 체크가 필요한 이유

      • 문제가 있는 인스턴스를 자동 감지하여 트래픽을 차단
      • Auto Scaling과 연동하여 비정상 인스턴스를 자동 교체 가능
      • 웹 애플리케이션, API 서버, 데이터베이스 등의 가용성을 높이는 핵심 기능

헬스 체크의 동작 방식

      1. 로드 밸런서가 정해진 주기(Interval)마다 헬스 체크 요청을 보냄
      2. 지정된 포트와 엔드포인트(/health 등)에 접속하여 상태 확인
      3. 응답 코드가 200(OK)이면 정상(Healthy), 다른 응답이거나 응답이 없으면 비정상(Unhealthy)으로 판단
      4. 비정상 상태가 연속적으로 감지되면, 해당 인스턴스를 트래픽 분배 대상에서 제외
      5. 다시 정상 상태로 감지되면, 트래픽을 다시 전달

헬스 체크 설정 항목

    • 프로토콜(Protocol) → HTTP, HTTPS, TCP
    • 포트(Port) → EC2 인스턴스에서 헬스 체크를 받을 포트 (예: 80, 443, 8080)
    • 헬스 체크 경로(Path) → /health, /status 같은 엔드포인트 설정
    • 정상/비정상 임계값
      • Healthy Threshold → 정상 상태로 판단할 요청 성공 횟수
      • Unhealthy Threshold → 비정상 상태로 판단할 요청 실패 횟수
    • 체크 주기(Interval) → 헬스 체크 요청 간격 (초 단위)
    • 타임아웃(Timeout) → 인스턴스가 응답을 반환해야 하는 최대 시간

Elastic Load Balancer(ELB) 유형

Classic Load Balancer (CLB)   (시험x)

  • 2009년 출시된 1세대 로드 밸런서
  • L4 (TCP, SSL) & L7 (HTTP, HTTPS) 지원
  • 고정된 DNS 이름 제공 (xxx.region.elb.amazonaws.com)
  • 현재는 ALB/NLB 사용이 권장됨

Application Load Balancer (ALB)

  • 2016년 출시된 2세대 로드 밸런서
  • OSI 7계층 (Layer 7)에서 동작 → HTTP, HTTPS, WebSocket 트래픽 처리
  • 고급 라우팅 기능 지원
    • 경로 기반 라우팅 (example.com/users → 사용자 서버, example.com/posts → 게시글 서버)
    • 호스트 기반 라우팅 (one.example.com → 서버 A, two.example.com → 서버 B)
    • 쿼리 문자열 및 헤더 기반 라우팅
  • 마이크로서비스 및 컨테이너 환경(Amazon ECS)에서 적합
  • 포트 매핑 기능 제공 → Amazon ECS에서 동적 포트로 트래픽을 라우팅 가능

https://velog.velcdn.com/images/pingu_9/post/7d471e5e-efc7-4274-8fcd-98b2a15ae28f/image.png

Network Load Balancer (NLB)

  • 2017년 출시된 2세대 로드 밸런서
  • OSI 4계층 (Layer 4)에서 동작 → TCP, UDP 트래픽 처리
  • 고성능, 초저지연 (millions of requests per second)
  • 고정된 IP 할당 지원 → 특정 IP를 화이트리스트(허용 목록)로 등록 가능
  • DNS 이름 및 Elastic IP 할당 가능
  • 금융 서비스, VoIP, 게임 서버 등 실시간 연결이 필요한 애플리케이션에 적합

https://velog.velcdn.com/images/pingu_9/post/7b7750c6-6ac6-4fad-bc32-e60052245a2f/image.png

Gateway Load Balancer (GWLB)

  • 2020년 출시된 3세대 로드 밸런서
  • OSI 3계층 (Layer 3)에서 동작 → IP 패킷 기반 트래픽 처리
  • 보안 장비(Firewall, IDS/IPS, Deep Packet Inspection 등)와 함께 사용
  • Transparent Network Gateway 역할 수행 → 보안 어플라이언스와 트래픽을 연결

https://velog.velcdn.com/images/pingu_9/post/e768f5f1-042c-4fb8-9c49-528236db4553/image.png


ELB와 보안 (Security Groups)

  • 로드 밸런서는 보안 그룹을 활용하여 트래픽을 제어할 수 있음
  • Load Balancer Security Group → 외부에서 오는 HTTP/HTTPS 트래픽을 허용
  • Application Security Group → 로드 밸런서에서만 허용된 트래픽만 받도록 설정

Sticky Sessions (Session Affinity)

  • 클라이언트가 항상 동일한 백엔드 인스턴스로 연결되도록 설정하는 기능
  • CLB, ALB, NLB에서 지원됨
  • 쿠키 기반 세션 유지
    • 커스텀 쿠키 (애플리케이션에서 설정 가능)
    • 로드 밸런서에서 자동 생성하는 쿠키 (AWSALB, AWSELB)
  • 사용 사례 → 로그인 세션 유지가 필요한 애플리케이션 (예: 전자상거래, 채팅 앱)
  • 단점 → 특정 인스턴스에 부하가 집중될 수 있음

https://velog.velcdn.com/images/pingu_9/post/e6378d92-b7e6-4d44-a478-e371678c2dce/image.png


Cross-Zone Load Balancing (AZ 간 부하 분산)

  • 여러 가용 영역(AZ)에 걸쳐 트래픽을 균등하게 분산하는 기능
  • ALB → 기본적으로 활성화 (비활성화 가능)
  • NLB, GWLB → 기본적으로 비활성화 (활성화 시 추가 요금 발생)
  • CLB → 기본적으로 비활성화 (활성화 가능, 추가 요금 없음)

https://velog.velcdn.com/images/pingu_9/post/e0297f3a-9d73-4530-b355-5ae731be1b39/image.png


 

로드 밸런서 활용 예시

  • 웹 서버 여러 대를 운영하는 경우, 트래픽을 균등하게 분산
  • 마이크로서비스 아키텍처에서 API 요청을 특정 서비스로 라우팅
  • TCP/UDP 기반의 금융 거래 시스템에서 빠른 트래픽 분산이 필요할 때
  • EC2 Auto Scaling과 함께 사용하여 트래픽 증가 시 자동으로 인스턴스를 추가/제거

SSL/TLS (보안 및 암호화) 정리

SSL/TLS란?
SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 클라이언트와 로드 밸런서 간의 트래픽을 암호화하여 보안을 강화하는 프로토콜이다.

  • SSL은 이전 버전이며, 현재는 TLS가 표준이지만 여전히 "SSL 인증서"라는 용어가 널리 사용됨.
  • 공인된 **인증 기관(CA, Certificate Authority)**에서 발급한 인증서를 사용해야 함.
    • 예: Comodo, Symantec, GoDaddy, GlobalSign, Digicert, Let's Encrypt

AWS에서 SSL/TLS 관리

  • AWS **Certificate Manager(ACM)**를 사용하여 인증서를 관리 가능
  • 사용자가 직접 인증서를 업로드할 수도 있음
  • HTTPS 리스너를 설정하면 기본적으로 하나의 인증서를 지정해야 하며, 여러 개의 인증서 추가 가능
  • SNI(Server Name Indication) 기능을 활용하여 여러 도메인에 대한 SSL 인증서 적용 가능

https://velog.velcdn.com/images/pingu_9/post/9fef96e8-eb97-4672-a44b-2261dcc7143b/image.png

 


Server Name Indication (SNI)

  • 하나의 로드 밸런서에서 여러 개의 SSL 인증서를 사용할 수 있도록 지원하는 프로토콜
  • 클라이언트가 SSL 핸드셰이크 시 접속하려는 도메인(hostname)을 전달하면, 서버가 해당 도메인에 맞는 인증서를 제공
  • ALB, NLB, CloudFront에서 지원 (CLB에서는 지원되지 않음)

https://velog.velcdn.com/images/pingu_9/post/dd4289fe-141b-4517-afb6-669b7bb3d0ac/image.png


ELB와 SSL 인증서

로드 밸런서 유형SSL 인증서 지원SNI 지원

Classic Load Balancer (CLB) 단일 SSL 인증서만 지원
Application Load Balancer (ALB) 다중 SSL 인증서 지원
Network Load Balancer (NLB) 다중 SSL 인증서 지원
  • CLB → 여러 개의 SSL 인증서를 사용하려면 여러 개의 CLB를 생성해야 함
  • ALB, NLBSNI를 사용하여 여러 SSL 인증서를 적용 가능

Connection Draining (Deregistration Delay)

로드 밸런서에서 연결 해제 중인 인스턴스가 진행 중인 요청을 마칠 수 있도록 대기하는 기능

  • CLB → "Connection Draining"
  • ALB & NLB → "Deregistration Delay"
  • 기본값은 **300초(5분)**이며, 1~3600초(1시간)까지 설정 가능
  • 짧은 요청이 많은 서비스의 경우, 대기 시간을 낮게 설정하는 것이 유리함

https://velog.velcdn.com/images/pingu_9/post/39686dc8-49ba-47e4-8b19-95f7a67c41d6/image.png


Auto Scaling Group (ASG) & Load Balancer 연동

**Auto Scaling Group(ASG)**은 트래픽 변화에 따라 EC2 인스턴스 수를 자동으로 조정하는 기능

  • 트래픽 증가 시 → EC2 인스턴스를 자동으로 추가 (Scale Out)
  • 트래픽 감소 시 → EC2 인스턴스를 자동으로 제거 (Scale In)
  • 최소/최대 인스턴스 개수를 지정 가능
  • 비정상 인스턴스가 감지되면 자동으로 교체
    https://velog.velcdn.com/images/pingu_9/post/4c927a68-263a-4fb1-9b35-17395b790132/image.png

Auto Scaling Group (ASG) 주요 속성

  • Launch Template → 인스턴스 유형, AMI, EBS 볼륨, 보안 그룹, IAM 역할 포함
  • Scaling Policies (확장 정책)
    • Target Tracking Scaling → 예: 평균 CPU 사용률을 40%로 유지
    • Simple/Step Scaling → 예: CPU가 70% 이상이면 2개 추가, 30% 미만이면 1개 제거
    • Scheduled Scaling → 예: 매주 금요일 오후 5시에 최소 인스턴스를 10개로 증가
    • Predictive Scaling → AI 기반 트래픽 예측 후 사전 확장

CloudWatch Alarms와 Auto Scaling 연동

  • CloudWatch 알람을 활용하여 ASG 확장 가능
  • CPUUtilization(평균 CPU 사용률), RequestCountPerTarget(요청 수), 네트워크 트래픽(In/Out) 등을 기준으로 확장

 

Auto Scaling에서 고려할 좋은 메트릭(Good metrics to scale on)

  1. CPUUtilization (CPU 사용률)
    • EC2 인스턴스들의 평균 CPU 사용률이 일정 임계값을 초과하면 인스턴스를 추가하고, 낮아지면 제거.
    • 예: 평균 CPU 사용률이 70%를 초과하면 2개 추가, 30% 미만이면 1개 제거
  2. RequestCountPerTarget (타겟당 평균 요청 수)
    • 로드 밸런서(ALB, NLB)에서 각 백엔드 인스턴스가 처리하는 요청 수를 기준으로 확장.
    • 예: EC2 한 대당 평균 요청 수가 1000건을 초과하면 확장, 500건 미만이면 축소
  3. Network In/Out (네트워크 트래픽)
    • 애플리케이션이 CPU가 아닌 네트워크 사용량이 많은 경우 트래픽 양을 기준으로 확장.
    • 예: EC2 한 대당 초당 500MB 이상의 네트워크 트래픽이 발생하면 확장
  4. Custom Metrics (사용자 정의 메트릭)
    • CloudWatch를 통해 애플리케이션 맞춤형 지표를 추가하고 이를 기준으로 확장 가능.
    • 예: 웹사이트의 활성 사용자 수, DB 쿼리 응답 시간, 메시지 대기열(SQS) 길이 등을 기준으로 확장.

Auto Scaling Cooldown (확장 안정화)

  • 새로운 인스턴스가 추가된 후 일정 시간 동안 추가 확장을 방지하는 기능
  • 기본값은 300초(5분)이며, AMI 최적화로 부팅 시간을 단축하면 대기 시간도 줄일 수 있음

'자격증 > aws' 카테고리의 다른 글

EC2 인스턴스 스토리지  (0) 2025.02.24
EC2 기초  (0) 2025.02.23
IAM  (0) 2025.02.21

1. EBS (Elastic Block Store) - 네트워크 연결 스토리지

EBS란?

EBS는 EC2 인스턴스에 네트워크를 통해 연결되는 저장 장치이다.
즉, EC2 인스턴스가 실행 중일 때, 하드디스크처럼 사용할 수 있는 AWS의 클라우드 기반 스토리지라고 보면 된다.

EBS의 특징

  • EC2와 독립적인 네트워크 저장소 → 인스턴스를 중지하거나 종료해도 데이터가 유지된다.
  • AZ(가용 영역, Availability Zone) 종속적 → 한 AZ에서 생성한 EBS는 다른 AZ에서 사용할 수 없다.
  • 하나의 EBS는 한 개의 인스턴스에만 연결 가능 → 다중 인스턴스 공유 불가 (다만 io1/io2 볼륨의 경우 멀티-어태치 기능을 제공).

https://cdn.prod.website-files.com/63403546259748be2de2e194/6510ab90d75705217fe92a97_Img1b_Short2.gif

EBS의 활용 사례

  • OS 및 애플리케이션 설치 공간
  • 데이터베이스 저장소 (MySQL, PostgreSQL, Oracle 등)
  • 지속적인 데이터 보관이 필요한 서비스

EBS 삭제 정책

  • 기본적으로 EC2 인스턴스를 삭제하면 루트 볼륨(EBS)도 삭제됨.
  • 추가로 연결한 EBS는 삭제되지 않음(설정 변경 가능).

EBS 스냅샷 (백업)

  • 특정 시점의 데이터를 스냅샷(Snapshot) 형태로 백업 가능.
  • 스냅샷을 활용하면 AZ나 리전 간 이동 가능 → 다른 리전에 복사하여 DR(재해 복구) 환경 구축 가능.

 EBS를 선택해야 하는 경우

  • EC2에 일반적인 데이터 저장 공간이 필요할 때
  • 인스턴스를 재시작해도 데이터가 유지되어야 할 때
  • 데이터베이스 저장 공간이 필요할 때 (MySQL, PostgreSQL 등)

2. Instance Store - 로컬 디스크

 Instance Store란?

Instance Store는 EC2 인스턴스 내부에 직접 연결된 하드디스크 같은 저장소이다.
EBS와의 차이점은?

  • 네트워크 스토리지(EBS)와 달리, 로컬 디스크이므로 속도가 매우 빠름.
  • 하지만 인스턴스를 중지하거나 종료하면 데이터가 사라짐(휘발성).
  • EC2가 새롭게 시작되면, Instance Store에 있던 데이터는 초기화됨.

 Instance Store의 특징

  • 고속 데이터 처리 가능 (IOPS 성능 우수)
  • EBS보다 지연시간이 짧고 성능이 뛰어남
  • 데이터 유실 가능성이 있음 → 지속적인 저장이 필요한 데이터에는 적합하지 않음.

 Instance Store의 활용 사례

  • 임시 파일 저장소 (캐시, 로그, 세션 데이터)
  • 데이터베이스의 임시 저장 공간 (예: Redis, Memcached)
  • 비디오 렌더링, 머신러닝 학습 데이터 저장

 Instance Store를 선택해야 하는 경우

  • 고속 데이터 처리가 필요한 경우 (로깅, 캐시, 일시적인 데이터 저장)
  • 데이터가 사라져도 상관없는 경우 (예: 웹서버의 캐시, 비디오 렌더링)

 

 

3.AMI (Amazon Machine Image)- EC2 인스턴스 템플릿

 AMI (Amazon Machine Image)란?

AMI(Amazon Machine Image)는 **EC2 인스턴스를 생성할 때 사용할 수 있는 "미리 구성된 템플릿"이다.
즉, 운영체제(OS), 애플리케이션, 설정 등을 포함한 EC2의 복제본으로, 동일한 환경을 여러 개의 인스턴스로 빠르게 배포할 수 있다.


 AMI의 특징

  • EC2 인스턴스를 쉽게 복제 가능 → 동일한 설정을 가진 인스턴스를 여러 개 배포 가능.
  • 운영체제(OS), 애플리케이션, 설정 포함 → 미리 패키징된 환경으로 빠른 배포 가능.
  • 부팅 및 구성 시간 단축 → 소프트웨어가 사전 설치되어 있어 즉시 실행 가능.
  • 리전에 종속됨 → 특정 리전에서 만든 AMI는 다른 리전에서 바로 사용 불가 (하지만 복사 가능).

 AMI의 유형

유형 사용 사례
Public AMI AWS에서 제공하는 기본 AMI 또는 다른 사용자가 공유한 AMI Amazon Linux, Ubuntu, Windows 등 기본 OS 제공
Private AMI 사용자가 직접 생성하고 특정 AWS 계정과만 공유 가능 회사 내부 시스템, 보안이 중요한 애플리케이션
AWS Marketplace AMI 서드파티 업체가 제공하는 AMI (유료/무료) 상용 소프트웨어 포함 (예: 보안 소프트웨어, 데이터베이스 서버)

AMI 생성 및 사용 프로세스

  1. EC2 인스턴스를 실행하고 환경을 커스터마이징
    • 운영체제(OS) 설정
    • 애플리케이션 설치
    • 보안 및 네트워크 설정
  2. EC2 인스턴스를 중지 (데이터 무결성 유지)
    • 실행 중인 상태에서 스냅샷을 찍으면 데이터 손상 가능성이 있으므로 중지한 후 진행.
  3. AMI 생성 (EBS 스냅샷 포함)
    • AMI를 생성하면 루트 볼륨을 포함한 모든 데이터가 이미지로 저장됨.
  4. 다른 인스턴스에서 해당 AMI를 사용하여 새로운 EC2 인스턴스 실행
    • 동일한 설정을 가진 여러 개의 인스턴스를 빠르게 배포 가능.
      https://miro.medium.com/v2/resize:fit:1100/format:webp/1*HL2KHJRB0GUsE8qF1881hQ.png

4. EFS (Elastic File System) - 공유 파일 시스템

 EFS란?

EFS는 여러 개의 EC2 인스턴스에서 동시에 접근할 수 있는 네트워크 파일 시스템(NFS)이다.
즉, 여러 서버가 하나의 파일 시스템을 공유할 수 있게 해준다.

https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qpu19i8kfsf8cjz05ed.png

 EFS의 특징

  • 멀티 AZ 지원 → 한 리전 내 여러 가용 영역(AZ)에서 동시에 접근 가능.
  • 자동 확장 → 저장 용량을 직접 설정할 필요 없이, 데이터 증가에 따라 자동 확장됨.
  • POSIX 호환 (리눅스 지원) → 리눅스 기반의 파일 시스템을 사용.
  • 비용이 EBS보다 비쌈 → 하지만, Infrequent Access(EFS-IA) 같은 티어를 사용하면 비용 절감 가능.

 EFS의 활용 사례

  • 웹 서버의 정적 파일 저장소 (예: Wordpress, Drupal, Joomla)
  • 다수의 서버에서 공유해야 하는 파일 시스템 (예: 개발 환경, 빅데이터 분석)
  • 머신러닝 모델 및 로그 파일 저장

 EFS 성능 모드

  • General Purpose(일반적인 웹/애플리케이션 서버용)
  • Max I/O(빅데이터, 고성능 병렬 처리 작업용)

 EFS 저장소 티어

  • Standard (기본값) → 자주 접근하는 데이터 저장
  • Infrequent Access (EFS-IA) → 가끔 접근하는 데이터 (비용 절감)
  • Archive → 거의 사용하지 않는 데이터 (저장 비용 50% 절감 가능)

 EFS를 선택해야 하는 경우

  • 여러 개의 EC2 인스턴스가 동일한 데이터에 접근해야 할 때
  • 웹 서버(Wordpress, Django, Flask 등)에서 공유 파일을 저장해야 할 때
  • 데이터를 자동으로 확장하고 싶을 때

5. EBS vs EFS 비교 정리

항목 EBS (Elastic Block Store) EFS (Elastic File System)
주요 특징 네트워크 연결 블록 스토리지 공유 파일 시스템 (NFS)
멀티 AZ 지원 ❌ (AZ 종속) ✅ (멀티 AZ 가능)
인스턴스 종료 후 데이터 유지 ✅ 유지됨 ✅ 유지됨
공유 가능 여부 ❌ 불가능 (한 인스턴스에만 연결) ✅ 가능 (여러 인스턴스 공유)
스토리지 확장 크기 수동 변경 필요 자동 확장
지연 시간 네트워크 기반 (약간의 지연) 네트워크 기반 (약간의 지연)
비용 중간 비쌈
사용 사례 OS, 데이터베이스 저장소, 일반 데이터 보관 웹 서버, 개발 환경, 다중 서버 파일 공유

 

'자격증 > aws' 카테고리의 다른 글

ELB및 ASG  (0) 2025.02.24
EC2 기초  (0) 2025.02.23
IAM  (0) 2025.02.21

1. Amazon EC2 개요

  • AWS에서 가상 서버(VM)를 제공하는 서비스로, IaaS(Infrastructure as a Service) 모델.
  • 주요 기능:
    • VM 임대: 원하는 사양의 EC2 인스턴스 생성 가능.
    • 스토리지 사용: EBS(Elastic Block Store) 및 EC2 인스턴스 스토리지 제공.
    • 로드 밸런싱(ELB): 트래픽을 여러 인스턴스로 분산 가능.
    • 오토 스케일링(ASG): 수요에 따라 자동 확장 가능.


2. EC2 인스턴스 설정 옵션

  • 운영 체제(OS): Linux, Windows, Mac OS 지원.
  • CPU 및 메모리: 다양한 성능 옵션 제공.
  • 스토리지:
    • EBS(Elastic Block Store): 네트워크 연결된 스토리지, 인스턴스 종료 후에도 데이터 유지.
    • 인스턴스 스토리지(Instance Store): 물리적 디스크, 인스턴스 종료 시 데이터 삭제됨.
  • 네트워크:
    • 퍼블릭 IP, 프라이빗 IP 설정 가능.
    • 보안 그룹(Security Group)으로 접근 제어 가능.
  • EC2 User Data: 부팅 시 실행할 초기 설정 스크립트 적용 가능.

3. EC2 인스턴스 유형

  • 일반 용도(General Purpose): 균형 잡힌 성능 (예: t2.micro, m5.large)
  • 컴퓨팅 최적화(Compute Optimized): CPU 성능이 중요한 작업 (예: c5.large)
  • 메모리 최적화(Memory Optimized): 대규모 데이터 처리 (예: r5.large//메모리ram//)
  • 스토리지 최적화(Storage Optimized): 고속 읽기/쓰기 작업 (예: i3.large//로컬 저장소 접근에 유용)

4. 보안 그룹(Security Groups)

  • AWS 내에서 EC2 인스턴스의 방화벽 역할 수행.
  • 인바운드/아웃바운드 트래픽 제어:
    • 기본적으로 모든 인바운드 트래픽 차단, 아웃바운드 트래픽 허용.
    • 특정 IP나 포트만 허용하도록 설정 가능.
  • SSH 연결 문제 해결:
    • 타임아웃 발생 → 보안 그룹에서 SSH(22번 포트) 허용 필요.
    • 연결 거부 → EC2 인스턴스에서 SSH 서비스가 실행되지 않았을 가능성.

5. EC2 접속 방법

  • AWS Management Console: 웹 UI로 관리 가능.
  • AWS CLI(Command Line Interface): 터미널에서 AWS 서비스 제어.
  • SSH를 이용한 접속:
    • Linux/Mac: ssh -i 키파일.pem ec2-user@퍼블릭IP
    • Windows: Putty 또는 EC2 Instance Connect 사용.

6. EC2 구매 옵션

  • 온디맨드(On-Demand): 사용한 만큼 비용 지불, 단기 사용에 적합.
  • 예약 인스턴스(Reserved Instances): 1년 또는 3년 약정으로 최대 72% 할인.
  • 세이빙 플랜(Savings Plans): 유연한 요금제, 장기 사용 시 비용 절감.
  • 스팟 인스턴스(Spot Instances):
    • AWS에서 남는 리소스를 경매 방식으로 저렴하게 제공(최대 90% 할인).
    • 하지만 필요할 경우 AWS가 사전 예고 없이 인스턴스를 회수 가능.
    • 비용 절감이 중요한 작업(배치 작업, 데이터 분석, AI 학습 등)에 적합.
    • 스팟 블록(Spot Block): 1~6시간 동안 중단 없이 스팟 인스턴스 사용 가능.
    • 스팟 플릿(Spot Fleet): 여러 개의 스팟 인스턴스와(옵션으로) On-Demand 인스턴스를 포함하는 집합체. 타겟 용량을 충족시키기 위해 여러 풀에서 인스턴스를 자동으로 선택합니다.
  • 전용 호스트(Dedicated Hosts): 특정 서버를 단독으로 사용 가능.

 

7. associate

VPC (Virtual Private Cloud)

  • AWS에서 제공하는 가상 네트워크 환경
  • 사용자가 정의한 IP 범위 내에서 리소스 배치 가능
  • 인터넷 게이트웨이, 서브넷, 라우트 테이블 등을 구성하여 네트워크 설계 가능

Private vs Public IP (IPv4)

  • Public IP: 인터넷에서 접근 가능, 고유해야 함
  • Private IP: 내부 네트워크에서만 사용, 중복 가능 (NAT 통해 인터넷 접근)
  • EC2 인스턴스는 기본적으로 Private & Public IP 모두 제공

Elastic IP

  • EC2 인스턴스의 공인 IP가 변경되는 것을 방지
  • 5개까지만 무료 할당 가능 (추가 요청 가능)
  • 고정 IP가 필요한 경우 사용하지만, 가급적 도메인(DNS) 사용 권장

Placement Groups

  • EC2 인스턴스의 배치 전략
    • Cluster: 단일 AZ 내에서 저지연 고속 네트워크 제공 (빅데이터, HPC)
    • Spread: 서로 다른 물리적 하드웨어에 배치 (고가용성 중요)
    • Partition: 다수의 파티션으로 나누어 장애 격리 (Hadoop, Kafka)

Elastic Network Interfaces (ENI)

  • 가상 네트워크 카드 개념
  • 하나의 EC2 인스턴스에 여러 개 부착 가능
  • 특정 AZ에 종속되며, 인스턴스 간 이동 가능

EC2 Hibernate

  • 인스턴스 메모리(RAM) 상태를 유지한 채 절전 모드로 전환
  • 재부팅 시 기존 실행 상태 복원 → 부팅 시간 단축
  • 조건:
    • RAM 150GB 이하
    • 지원되는 인스턴스 타입 (C3, C4, C5, M3, M4, R3, R4, T2, T3 등)
    • 루트 볼륨이 암호화된 EBS여야 함
    • 최대 60일까지 Hibernate 가능

EC2 인스턴스 상태

  • Start: 부팅 후 실행됨
  • Stop: 중지 (EBS 데이터 유지)
  • Terminate: 인스턴스 삭제 (EBS도 삭제될 수 있음)
  • Hibernate: RAM 상태 저장 후 절전 (빠른 부팅 가능)

 

 

+AZ는 리전 내에서 물리적으로 분리된 데이터 센터를 의미하며, 고가용성장애 격리를 제공.

+파티션AZ 내에서 EC2 인스턴스를 분배하는 전략으로, 하드웨어 격리장애 격리를 통해 대규모 분산 시스템에서 안정성을 높이는 데 사용

 

'자격증 > aws' 카테고리의 다른 글

ELB및 ASG  (0) 2025.02.24
EC2 인스턴스 스토리지  (0) 2025.02.24
IAM  (0) 2025.02.21

1. 소프트웨어 개발 방법론

소프트웨어 생명주기 모델 (SDLC)

  • 프로세스 단계: 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
  • 모델 종류
    • 폭포수 모델: 단계별 진행, 이전 단계로 돌아가기 어려움
    • 프로토타이핑 모델: 시제품(Prototype) 제작 후 수정·보완
    • 나선형 모델: 위험 분석을 기반으로 반복적 개발
    • 반복적 모델: 일정 단위로 나누어 점진적 개발

소프트웨어 개발 방법론

  • 구조적 방법론: 절차 중심 개발
  • 정보공학 방법론: 데이터 중심 개발
  • 객체지향 방법론: 객체 중심 개발
  • 컴포넌트 기반 개발 (CBD): 재사용 가능한 컴포넌트 활용
  • 애자일 방법론: 변화 대응과 팀 협업 중심
  • 제품 계열 개발 방법론: 임베디드·특정 제품 중심

요구공학 (Requirement Engineering)

  • 개발 프로세스: 요구사항 도출 → 분석 → 명세 → 검증
  • 관리 프로세스: 협상 → 기준선 설정 → 변경 관리 → 검증

2. 프로젝트 관리

비용 산정 모델

  • 하향식: 전문가 판단 (델파이 기법)
  • 상향식: 코드라인수(LOC), Man-Month, COCOMO, Putnam, FP(Function Point)

일정 관리 모델

  • CPM (주공정법): 프로젝트의 중요 경로 관리
  • PERT: 확률적 일정 관리
  • 간트차트: 작업 일정 시각화

위험 관리 (Risk Management)

  • 위험 식별 → 분석 → 계획 → 감시 및 조치
  • 위험 대응 전략
    • 회피(Avoid)
    • 전가(Transfer)
    • 완화(Mitigate)
    • 수용(Accept)

3. 소프트웨어 개발 표준 및 프레임워크

국제 표준

  • ISO/IEC 12207: 소프트웨어 생명주기 프로세스 정의
  • CMMI (Capability Maturity Model Integration)
    • 성숙도 레벨: 초기(1) → 관리(2) → 정의(3) → 정량적 관리(4) → 최적화(5)
  • SPICE (ISO 15504)
    • 수준 모델: 불완전 → 수행 → 관리 → 확립 → 예측 → 최적화

개발 프레임워크

  • 소프트웨어 재사용
    • 합성 중심 (기존 모듈 조합)
    • 생성 중심 (템플릿, 자동 코드 생성)

4. 네트워크 및 시스템 구축

네트워크 구성 및 신기술

  • 네트워크 구조: 버스형, 트리형, 링형, 메시형, 성형
  • 라우팅 프로토콜
    • RIP: 홉 수 15 제한
    • OSPF: 제한 없음
    • BGP: ISP 간 사용

스토리지 및 백업

  • 스토리지 유형
    • DAS: 개별 서버에 직접 연결
    • NAS: 네트워크 기반 공유
    • SAN: 전용 네트워크
  • 백업 방식
    • 전체 백업
    • 차분 백업 (마지막 전체 백업 이후 변경된 데이터)
    • 증분 백업 (가장 최근 백업 이후 변경된 데이터)

5. DB 구축 및 빅데이터 기술

빅데이터 개념 및 기술

  • 3V 요소: 속도(Velocity), 크기(Volume), 다양성(Variety)
  • 빅데이터 저장 및 분석 기술
    • HDFS, HBASE, MapReduce
    • 데이터 가공 (Pig, Hive, Tajo)
    • 분석 및 시각화 (R, Python)

NoSQL 데이터베이스

  • 특징: 스키마 필요 없음, 조인 사용 안 함, 수평 확장 가능
  • 유형
    • 키-값 저장소
    • 컬럼 기반 저장소 (HBASE)
    • 문서 저장소 (MongoDB, JSON 기반)
    • 그래프 DB (Neo4j)

6. 소프트웨어 보안 구축

보안 3대 요소

  • 기밀성 (Confidentiality)
  • 무결성 (Integrity)
  • 가용성 (Availability)

Secure SDLC 및 보안 방법론

  • BSiMM, OpenSAMM, OWASP CLASP, MS SDL

웹 보안 취약점 및 대응

  • XSS (Cross-Site Scripting): 문자 필터링, HTML 태그 제한
  • SQL Injection: 바인딩 방식 사용, 필터링
  • CSRF (Cross-Site Request Forgery): CSRF 토큰 사용, 재인증

암호화 기법

  • 대칭키 암호화: AES, DES
  • 비대칭키 암호화: RSA, ECC
  • 해시 암호화: SHA, MD5 (취약점 존재)

취약점 대응 기법

  • 솔트 키 사용, 키 스트레칭 (n번 반복)

7. 시스템 보안 구축

서비스 공격 유형

  • DoS/DDoS 공격: SYN Flooding, UDP Flooding, Smurf 공격
  • 애플리케이션 공격: HTTP GET Flooding, Slowloris, Rudy 공격

네트워크 보안 위협

  • 패스워드 크래킹
  • IP/ARP 스푸핑
  • 세션 하이재킹

보안 관련 공격 기법

  • 버퍼 오버플로우 (스택, 힙)
  • 포맷 스트링 공격
  • 키로거 공격

인증 및 접근 통제

  • 인증 방식: 지식 기반, 소지 기반, 생체 기반
  • 접근 통제 유형: DAC(신분 기반), MAC(규칙 기반), RBAC(역할 기반)

보안 아키텍처

  • 관리적 보안: 정책 및 규정
  • 물리적 보안: 데이터센터 보호
  • 기술적 보안: 방화벽, IDS/IPS, VPN

8. 보안 솔루션 및 로그 관리

네트워크 보안 솔루션

  • 방화벽 (Firewall)
  • 웹 방화벽 (WAF)
  • 침입 탐지 시스템 (IDS)
  • 침입 방지 시스템 (IPS)
  • 가상사설망 (VPN)

시스템 보안 솔루션

  • 보안 운영체제 (커널 보안 강화)
  • 콘텐츠 유출 방지 (DLP, DRM)

1. 개발환경

1) 개발환경 구축

  • 정의: 응용 소프트웨어의 개발 편의성과 성능 향상을 위해 하드웨어 및 소프트웨어 환경을 구축하는 과정
  • 도구의 분류
    • 빌드 도구: 코드 빌드 및 배포 (ex: Ant)
    • 구현 도구: 코드 작성, 디버깅, 수정 (ex: Eclipse, Spring, VS Studio)
    • 테스트 도구: 기능 검증 및 품질 향상 (ex: xUnit)
    • 형상 관리 도구: 코드 및 문서의 버전 관리 (ex: Git)

2) 개발환경 구성요소

(1) 서버 하드웨어

  • 웹 서버(정적) → 클라이언트 요청을 받아 HTML 문서 전송 (ex: Apache)
  • WAS(동적) → 웹 서버와 DB 서버 사이에서 데이터 처리 (ex: Tomcat)
  • DB 서버 → 데이터 저장 및 관리 (ex: MySQL Server)
  • 파일 서버 → 파일 저장 및 전송 (ex: AWS S3)

(2) 클라이언트 하드웨어

  • 클라이언트 프로그램 → 설치형 프로그램 (ex: Visual Basic)
  • 웹 브라우저 → 서버와 웹 통신 (ex: Chrome)
  • 모바일 앱 → 앱스토어에서 다운로드 가능한 앱
  • 모바일 웹 → 모바일 브라우저에서 웹 서비스 제공

(3) 소프트웨어 개발환경

  • 운영체제 (OS) → 하드웨어와 소프트웨어를 연결 (ex: Windows, Linux)
  • 미들웨어 → 다양한 환경에서 실행 가능하게 함 (ex: JVM, Tomcat)
  • DBMS → 데이터 관리 시스템

3) 서버 개발 프레임워크

  • 프레임워크: 재사용 가능한 소프트웨어 개발 틀
    • 특징: 모듈화, 재사용성, 확장성, 제어의 역행

2. 프로그래밍

1) 데이터 타입

  • 정수형: int, long
  • 실수형: float, double
  • 문자형: char, string
  • 논리형: boolean

2) 변수

  • 정의: 데이터를 저장하는 공간
  • 규칙: 숫자로 시작 금지, 공백 금지, 예약어 사용 금지

3) 출력

(1) C언어

#include <stdio.h>
int main() {
    printf("Hello");
    return 0;
}
  • printf() → 출력
  • \n → 개행

(2) Java

class Example {
  public static void main(String[] args) {
    System.out.println("Hello");
  }
}
  • System.out.print() → 개행 없음
  • System.out.println() → 개행 있음
  • System.out.printf() → 포맷 지정 가능

(3) Python

print("Hello")
print("Hello", end="")  # 개행 없음
  • print() → 자동 개행

4) 배열

  • C언어: int arr[5] = {1, 2, 3};
  • Java: int[] arr = {1, 2, 3};

5) 포인터 (C언어)

int a = 10;
int *b = &a;
  • & → 주소 연산자
  • * → 포인터

6) 파이썬 자료형

  • 리스트: [1, 2, 3]
  • 튜플 (수정 불가): (1, 2, 3)
  • 세트 (중복 제거): {1, 2, 3}

3. 운영체제

1) 기본 명령어

  • ls → 현재 디렉토리 파일 목록 확인
  • cat → 파일 내용 출력
  • fork → 새로운 프로세스 생성
  • chmod → 퍼미션 수정
  • uname → 시스템 정보 확인
  • pwd → 현재 경로 확인

2) 프로세스와 스레드

  • 프로세스: 실행 중인 프로그램
  • 스레드: 프로세스 내에서 CPU를 할당받아 실행되는 단위

3) 페이징 기법

  • 페이지 크기가 작아질수록 페이지 개수 증가, 페이지 테이블 크기 증가, 내부 단편화 감소

4. 네트워크

1) 전송 매체 및 MAC

  • CSMA/CD: 충돌 감지 후 재전송 (사용 안 함)
  • CSMA/CA: 충돌 방지 후 전송

2) IP 주소

  • IPv4: 32비트 (20 Octet)
  • IPv6: 128비트 (16진수, 40 Octet)

3) 라우팅 프로토콜

  • IGP (내부 라우팅) → RIP, OSPF
  • EGP (외부 라우팅) → BGP

4) TCP/IP

  • TCP 헤더 크기: 20~60 바이트
  • IP 헤더 크기: IPv4 (20 Octet), IPv6 (40 Octet)

 

데이터베이스 정리

1. 데이터 정의 및 조작

  • 데이터 정의(DDL): 응용 프로그램과 데이터베이스의 인터페이스 방식 정의
  • 데이터 조작(DML): 사용자와 데이터베이스 간 인터페이스 수단 제공
  • 데이터 제어(DCL): 데이터의 정확성과 안정성 유지

2. 스키마 개념

  • 외부 스키마: 사용자 또는 개발자 관점의 데이터베이스 논리적 구조 (사용자 뷰, 서브 스키마)
  • 개념 스키마: 데이터베이스의 전체적인 논리적 구조 (개체 관계, 제약조건, 무결성 등)
  • 내부 스키마: 물리적 저장장치 관점에서 데이터를 저장하는 방식 정의

3. 트랜잭션 및 병행제어

  • 트랜잭션: 논리적 기능을 수행하는 하나의 작업 단위 (ACID)
  • 커밋 & 롤백: 원자성 보장
  • 병행제어:
    • 로킹 단위가 작아지면
      • 데이터베이스 공유도 증가
      • 로킹 오버헤드 증가
      • 병행성 증가
  • 트랜잭션 상태
    • 부분 완료: 연산이 끝났지만 최종 반영되지 않은 상태
    • 실패 상태: 정상 실행 불가 상태
    • 철회 상태: 시작 전 상태로 되돌림

4. 뷰(View)

  • 논리적 독립성 제공
  • CREATE, DROP 가능 (ALTER 불가)
  • 기본 테이블 삭제 시 자동 삭제
  • 인덱스 생성 불가
  • 삽입, 삭제, 갱신 연산에 제약사항 존재

5. 관계형 데이터베이스

  • 릴레이션: 테이블
  • 튜플: 행(카디널리티)
  • 속성: 열(차수)
  • 관계대수(절차적 언어)
    • 순수 관계 연산자: SELECT, PROJECT, JOIN, DIVISION
  • 관계 해석(비절차적 언어)
    • 튜플 관계 해석
    • 도메인 관계 해석

6. 정규화 및 이상현상

  • 이상현상(삽입, 삭제, 갱신 이상)
  • 정규화 단계
    1. 원자성
    2. 부분 함수 종속 제거
    3. 이행적 함수 종속 제거
    4. 다치 종속 제거
    5. 조인 종속 제거

7. 키(Key)

  • 슈퍼키: 유일성 만족, 최소성 만족X
  • 후보키: 유일성 & 최소성 모두 만족
  • 기본키: 후보키 중 선택된 키
  • 외래키: 다른 테이블의 기본키를 참조

8. 데이터 무결성 및 보안

  • 무결성
    • 개체 무결성: 기본키는 NULL & 중복 불가
    • 참조 무결성: 외래키는 기본키이거나 NULL이어야 함
    • 속성 무결성, 사용자 무결성, 키 무결성
  • 보안 모델
    • DAC(임의적 접근 제어)
    • MAC(강제적 접근 제어)
    • RBAC(역할 기반 접근 제어)
    • 벨-라파듈라 모델: 기밀성
    • 비바 모델 / 클락-윌슨 모델: 무결성

9. SQL 활용

  • DML(데이터 조작어)
    • SELECT, INSERT INTO VALUES, UPDATE SET WHERE, DELETE FROM WHERE
  • DCL(데이터 제어어)
    • GRANT 권한 ON 테이블 TO 사용자
    • REVOKE 권한 ON 테이블 FROM 사용자
  • 집계 함수
    • AVG(), SUM(), COUNT(), MAX(), MIN() (그룹 필요)

10. 분산 데이터베이스

  • 투명성 유형
    • 위치, 복제, 병행, 분할, 장애
  • 파티셔닝 기법
    • 범위 분할, 해시 분할, 목록 분할, 조합 분할, 라운드 로빈

11. 반정규화

  • 성능 향상과 운영 단순화를 위해 중복, 통합, 분리 수행
  • 중복 테이블 추가 방법
    • 집계 테이블 추가
    • 진행 테이블 추가
    • 특정 부분만 포함하는 테이블 추가

 

1. 자료구조 및 알고리즘

자료구조

  • 선형 구조
    • 스택 (LIFO): 함수 호출, 후위 표현식 변환, 깊이 우선 탐색(DFS), 인터럽트 처리
    • 큐 (FIFO): 데이터 버퍼, 프로세스 스케줄링
    • 데크 (Deque): 양쪽에서 삽입/삭제 가능
    • 리스트
      • 선형 리스트
      • 연결 리스트 (단순/이중/원형)
  • 비선형 구조
    • 트리
      • 이진 트리: 전위/중위/후위 순회
      • 이진 탐색 트리 (BST)
      • 힙 (Heap): 우선순위 큐 구현
    • 그래프
      • DFS (깊이 우선 탐색)
      • BFS (너비 우선 탐색)

정렬 알고리즘

  • 퀵 정렬: 피벗을 설정하여 분할 정복 방식으로 정렬
  • 합병 정렬: 분할 후 병합하여 정렬
  • 힙 정렬: 최대 힙/최소 힙 구조를 활용
  • 거품 정렬: 인접한 두 요소를 비교하며 정렬
  • 삽입 정렬: 앞에서부터 정렬된 부분과 비교하여 삽입
  • 선택 정렬: 가장 작은 값을 선택하여 정렬

검색 알고리즘

  • 순차 검색: 처음부터 하나씩 비교
  • 이진 검색: 중앙값을 기준으로 탐색 (O(log n))

해시 함수 기법

  • 나눗셈 방법
  • 곱셈 방법
  • 숫자 분석 방법
  • 폴딩 방법 (XOR 폴딩법)
  • 중간 제곱 방법

2. 통합 구현

통합 구현 개념

  • 모듈(컴포넌트) 간 데이터 교환 및 시스템 연계를 수행

단위 모듈

  • 정의
  • 분석
  • 추출
  • 모듈화

재사용 기법

  • 재공학 (Reengineering)
    • 분석
    • 재구조화
    • 역공학
    • 이식
  • 재개발 (Refactoring)

형상 관리 (SCM, Software Configuration Management)

  • 형상 관리 절차: 식별 - 통제 - 감사 - 기록
  • 형상 관리 도구 기능: 인증 - 아카이브 - 커밋
  • 사례: CSG
  • 형상 통제 위원회 (CCB, Configuration Control Board)

3. 제품 SW 패키징

소프트웨어 품질 기준

  • ISO 9126: 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
  • ISO 14598: 평가 기준 (반복성, 재사용성, 공정성, 객관성)
  • ISO 2500 시리즈: 통합 품질 모델

SW 패키징 구성 요소

  • DRM (Digital Rights Management, 디지털 저작권 관리)
    • 패키저: 콘텐츠를 메타데이터와 함께 묶음
    • 클리어링 하우스: 라이선스 발급
    • 컨트롤러: 이용 권한 통제
  • 버전 관리
    • 공유 폴더 방식 (RCS)
    • 클라이언트/서버 방식 (SVN, CVS)
    • 분산 방식 (Git)
  • 빌드 자동화 도구
    • CS, 빌드, 테스트, 커밋, 인테그레이션

소프트웨어 배포 도구 고려 사항

  • 암호화
  • 이식성
  • 복구 기능
  • 최적화

4. 애플리케이션 테스트 관리

테스트 개념

  • 테스트 오라클: 참, 샘플링, 휴리스틱, 일관성 검사
  • 테스트 레벨
    • 단위 테스트 (모듈 내 구조 확인)
    • 통합 테스트 (모듈 인터페이스 검증)
    • 시스템 테스트 (기능/비기능 테스트)
    • 인수 테스트 (알파/베타 테스트)
  • 테스트 유형
    • 블랙박스 테스트: 프로그램 내부 구조를 고려하지 않음
    • 화이트박스 테스트: 내부 로직 기반 테스트

테스트 설계 기법

  • 블랙박스 테스트 기법: 동등 분할, 경계값 분석, 결정 테이블, 상태 전이, 유스케이스, 원인-결과 그래프, 비즈니스 규칙
  • 화이트박스 테스트 기법: 제어 흐름, 조건 검증, 루프 테스트

테스트 원리

  • 결함 집중: 파레토 법칙 (80% 결함은 20% 원인)
  • 소프트웨어 테스트 원칙: 결함 존재 증명, 완벽한 테스트 불가능, 조기 테스트, 결함 집중, 살충제 패러독스, 정황 의존성, 오류 부재의 궤변

5. 인터페이스

EAI (Enterprise Application Integration)

  • 서로 다른 애플리케이션 간 데이터 연계를 위한 솔루션
  • 연계 방식: 포인트 투 포인트, 허브 앤 스포크, 메시지 버스, 하이브리드

ESB (Enterprise Service Bus)

  • 서로 다른 프로토콜과 애플리케이션을 유연하게 연계 (낮은 결합)

데이터 교환 기술

  • AJAX: 비동기 데이터 전송
  • REST API: HTTP 기반 인터페이스

DB 암호화 기법

  • 애플리케이션 레벨
  • 하드웨어 기반 암호화

시큐어 코딩 가이드

  • 입력 데이터 검증, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API 오용

보안 프로토콜

  • S-HTTP, SSL/TLS, IPsec

인터페이스 구현 검증 도구

  • xUnit, Postman, Excel, WebSquare

STAF (Software Testing Automation Framework)

  • 분산 환경에서 데몬을 이용한 자동화 테스트 수행

 



 

+ Recent posts