Skip to main content

IaC, 코드형 인프라스트럭처

· 2 min read

IaC의 개념

  • 인프라 구성 및 제어를 수동으로 관리하는 대신 코드로 정의하고 관리하는 기법
  • 휴먼에러 방지, 자동화, 일관성, 버전 관리

IaC의 구성도, 구성요소, 장점

IaC의 구성도

IaC의 구성요소

구분내용비고
버전관리시스템코드 변경사항 추적 및 관리Git
파이프라인코드 통합, 테스트, 배포 자동화ArgoCD
프로비저닝인프라를 코드로 정의, 배포Ansible, Terraform
부트스트랩어플리케이션 배포에 필요한 설정 관리Docker, Helm

IaC의 장점

구분장점비고
비용효율측면작업시간 단축반복작업 자동화
-예방비용 감소인프라 단위 테스트
에러관리 측면휴먼에러 감소코드리뷰, 실수방지
-빠른 롤백구성 실패시 이전버전 롤백
  • 개발 환경 구축과 배포 프로세스를 자동화하여 DevOps, GitOps 기술 요구사항 충족

IaC 고려사항

  • 보안 관련 정보 추가시 파이프라인 내부 Secret Variable로 관리 필요

노코드

· 2 min read

노코드 개념

  • 프로그래밍 지식 없이 UI와 드래그 앤 드랍 기능 등을 활용하여 SW를 개발할 수 있도록하는 플랫폼 또는 도구
  • 개발 속도 향상으로 인한 비용절감과 비전문가도 어플리케이션을 개발할 수 있는 접근성 향상

노코드 구성도, 구성요소, 적용방안

노코드 구성도

노코드 구성요소

구분내용비고
사용자 인터페이스시각적으로 어플리케이션 또는 워크플로우 조작드래그 앤 드랍
모듈사전 구성된 기능 모듈재사용 가능
버전관리다중 사용자 환경 구축문서 버저닝
데이터 모델 통합기능과 비지니스 로직, 데이터 모델 통합API, 데이터 제어

노코드 적용방안

구분내용비고
공공코딩 없는 SW 개발 교육생산성 향상
금융데이터 분석 도구 시각화대쉬보드 사용성
민간빠른 프로토타이핑, 시장 출시효율성, 비용절감

노코드 사용시 고려사항

  • 커스터마이징이 필요한 경우, Low-code 플랫폼이나 Pro-code 방식으로 어플리케이션 구현 필요.

RAID

· 3 min read

RAID의 개념

  • 디스크의 안정성과 성능을 위해 여러 개의 개별 디스크를 연결하여 대용량 디스크를 구성하는 기술
  • 가용성 Fault Tolerant, 유지보수성 Hot-Swap, 고속 I/O Striping, 안정성 Mirroring, Parity Check, 확장성

RAID의 유형, RAID5, RAID6 비교

RAID의 유형

구분개념도특징최소 디스크 수
RAID0-데이터 분산 저장, 스트라이핑2
RAID1-데이터 중복 저장, 미러링2
RAID2-해밍코드, 다수 패리티 디스크, 사용안함3
RAID3-별도 패리티 디스크, 사용안함3
RAID4-블록단위 별도 패리티 디스크, 사용안함3
RAID5-패리티 스트라이핑, 데이터 무결성 보장3
RAID6-이중 패리티 스트라이핑, 높은 신뢰성4
RAID01-스트라이핑 후 미러링, 장애시 전체 복구4
RAID10-미러링 후 스트라이핑, 손실된 데이터만 복구4
  • RAID50은 최소 디스크 6개 필요

RAID5, 6 비교

구분RAID5RAID6
최소 디스크 수3개4개
고장 허용 디스크1개2개
패리티 수12
장점저장효율성, 관리 용이성, 빠른 읽기 성능, 적절한 쓰기 성능이중 디스크 장애허용, 높은 내결함성, 안정성
단점복수 디스크 손상시 데이터 손실느린 쓰기 성능, 복잡한 구현

RAID 적용시 고려사항

  • RAID는 백업이 아니므로, RTO, RPO를 고려한 별도의 증분 백업 전략 수립

Thrashing, 스레싱

· 3 min read

스레싱의 개념

  • 멀티프로세싱 환경에서 빈번한 페이지 교체로 실제 프로세스 실행보다 페이지 교체에 더 많은 시간을 소요하여 프로세스 성능이 낮아지는 이상현상

프로세스 스레싱의 개념도, 원인, 해결방안

프로세스 스레싱의 개념도

프로세스 스레싱의 원인

구분원인내용
리소스 부족저사양 CPUCPU 코어부족, 속도 부족
-메모리 용량 부족용량 부족으로 인한 가상메모리 사용 증가
부적절한 페이지 교체 정책지역성 미고려페이지 교체 정책 효율성 저하
-페이지 빈도 미고려부적절한 페이지 교체 알고리즘 사용
과도한 멀티프로그래밍다중 프로세스 수용 초과과도한 멀티프로그래밍으로 페이지 폴트
-페이지 교체 수용 추가페이지 수 초과로 인한 페이지 폴트
  • Working Set Model, Page Fault Frequency 기버을 통해 발생을 최소화하는 것이 최선의 방법

프로세스 스레싱 해결방안

  • Working Set: 프로세스가 자주 참조하는 페이지 집합을 메모리에 상주시켜 교체 감소
  • Page Fault Frequency: 페이지 부재율상한, 하한을 정하여 직접 페이지 부재율을 예측하여 프레임 할당, 프레임 회수하여 페이지 교체 감소

스레싱 발생시 고려사항

  • 자주 사용하는 프로세스에 높은 우선순위를 부여하여 중요 작업이 원활히 수행 가능하도록 처리

PNM, Processing Near Memory

· 3 min read

PNM의 개념

  • 메모리와 프로세서를 다이 차원에서 가깝게 연결하여 별도의 논리연산을 수행하는 메모리
  • 메모리 접근을 위한 병목 최소화, 대역폭 최대화 가능

PNM의 구성도, 구성요소, 적용방안

PNM의 구성도

PNM의 구성요소

구분내용비고
프로세서연산처리 담당 중앙처리장치데이터 처리
고속 인터페이스메모리와 프로세서 간 통신 속도 향상CXL 등
DRAM Cell대용향 휘발성 기억 장치데이터 저장
다이회로가 제작된 공간직접회로 연결
  • 다이 접합과 인터페이스 통합으로 제작이 가능하기에 기존 프로세서 사용 용이

PNM 활용방안

구분내용비고
데이터 집중형 앱데이터 접근 빈도가 높은 어플리케이션 적용빅데이터 분석, LLM 등
실시간 처리 앱실시간 데이터 처리가 필요한 슈퍼컴퓨팅에 활용금융모델, 기상 예보 등
전력효율 필요 앱높은 전성비를 유지해야하는 환경모바일, 임베디드시스템 등

PNM 고려사항

  • CPU와 PNM간 메모리 데이터 젖아시 경합을 고려한 SW개발 필요

페이징, 세그먼테이션

· 3 min read

메모리 관리 기법의 개념

  • 제한된 메모리 리소스를 효율적으로 사용하기 위해 메모리 관리 기법 필요

페이징 기법, 세그먼테이션 기법 개념도, 핵심요소

페이징 기법, 세그먼테이션 기법 개념도

  • 페이징 기법은 동일한 크기로, 세그먼테이션 기법은 가변크기로 분할

페이징 기법, 세그먼테이션 기법 핵심요소

구분페이징세그먼테이션
단위크기고정, 페이지가변, 세그먼트
외부단편화없음있음
내부단편화있음없음
주소사상페이지테이블세그먼트테이블
복잡성단순주소, 사이즈 관리 복잡
프로세스 간 공유어려움용이
교체시간짧은느림
  • 페이징 기법의 메모리 관리 효율성, 세그먼테이션 기법의 논리적 메모리 관리 이점을 결합한 페이지드 세그먼테이션 기법 사용

페이지드 세그먼테이션 기법

  • 파일 관리는 세그먼트 단위로, 프로그램 조각은 페이지 단위로 관리

메모리 관리 기법 선택시 고려사항

  • 외부단편화와 내부단편화를 줄이기 위해 버디메모리, 슬랩할당자 기법 사용 고려.
  • 스레싱이 발생하지 않게 적절한 테이블 크기 설정

뉴로모픽 칩

· 3 min read

뉴로모픽 칩의 개요

  • 인간의 뇌를 모방하여 정보를 연산, 저장하는 비 폰노이만 구조의 저전력, 고성능 칩
  • 기존 폰노이만 구조의 프로세서로 연산하기 어려운 인공지능, 시뮬레이션 등 병렬 작업을 처리하기 위해 필요

뉴로모픽 칩의 구성도, 구성요소, NPU와 비교

뉴로모픽 칩의 구성도

뉴로모픽 칩의 구성요소

구분내용비고
뉴로모픽 칩시냅스와 뉴런으로 구성, 스파이크 자극에 의해 유기적으로 자율 조절인간 뇌와 같이 저전력으로 학습
스파이킹 신경망, SNN생물학적 신경 네트워크 구조를 모방대규모 병렬 연산, 가중치 전달
뉴로모픽 소자뉴런과 시냅스를 구성하는 핵심 소자로 메모리와 레지스터의 결합멤리스터
PIM뉴런을 배열하여 스파이크 입력 변환, 뉴런 배열에서의 스파이크 발화 동작 및 학습, 학습 결과 특성 분류 수행SRAM 기반

NPU와 뉴로모픽 침의 차이점

구분NPU뉴로모픽 칩
구조폰노이만생물의 뉴런 시스템
목적GPU를 CPU로 만들어 연산 활용메모리를 CPU로 만들어 연산 활용
중점인공신경망 연산의 효율적 수행인공신경망 외 다양한 프로그램 연산
관련 업체엔비디아 등IBM, 인텔 등
장점LLM 등 인공지능 모델 확산 기여전력, 면적, 성능 등에서 압도적 결과
단점대규모 데이터센터 공간/전력 소모뉴로모픽 칩 개발의 어려움

뉴로모픽 칩 고려사항

  • 뉴로모픽 하드웨어를 최대한 활용할 수 있는 알고리즘 및 SW개발, 연구 병행 필요

UML, Unified Modeling Language

· 4 min read

UML 개념

  • SW산출물을 가시화, 명세화, 구축, 문서화하는 도구로 구조, 동작, 인터랙션 다이어그램으로 구분

시퀀스 다이어그램, 커뮤니케이션 다이어그램 구성도, 구성요소, 절차

시퀀스 다이어그램, 커뮤니케이션 다이어그램 구성도 비교

  • 시퀀스 다이어그램은 시간 순서에 따라, 커뮤니케이션 다이어그램은 구조에 따라 인터렉션 표현

시퀀스 다이어그램, 커뮤니케이션 다이어그램 구성요소 비교

구분시퀀스커뮤니케이션
개념객체 간 상호작용을 시간 흐름에 따라 메세지 표현객체 간 메세지의 구조적 구성 표현
핵심요소라이프라인, 액티베이션박스, 메세지객체, 링크, 메세지
사례시스템 내부 프로세스, 실행 순서시스템 아키텍처 개념적 이해

시퀀스 다이어그램, 커뮤니케이션 다이어그램 절차 비교

구분절차비고
시퀀스 다이어그램액터와 활성 객체 나열시간순서 배치
-객체 간 메세지 작성상호 작용 추가
-활성객체별 액티베이션박스 작성활성화 시간 표현
커뮤니케이션 다이어그램중요 객체, 클래스, 액터 식별구조적 중요성 강조
-객체 및 액터 배치, 연결커뮤니케이션 구조 중심
-메세지 링크 강조연결성 명확화

UML 작성시 고려사항

  • OMG 글부 표준을 준수하여 정확성, 효용성, 유지보수성을 가진 산출물 작성

MSA, 모놀리틱 아키텍처

· 3 min read

MSA, 모놀리틱 아키텍처 개념

  • 모놀리틱 아키텍처에서 비지니스 프로세스를 독립된 서비스로 분리한 SOA로 전환, SOA의 ESB 부하집중, 기술스택 일원화 문제를 해결하기 위해 MSA 등장

MSA, 모놀리틱 아키텍처 구성도, 구성요소, 적용방안

MSA, 모놀리틱 아키텍처 구성도

  • 하나의 어플리케이션을 여러 개의 서비스로 나눠 조합하여 서비스를 제공

MSA, 모놀리틱 아키텍처 구성요소

구분모놀리틱MSA
모듈성영향도, 의존성 높음서비스 간 의존성 낮음
유지보수성규모가 커질수록 어려움개별 서비스
확장성부분 Scale-out 어려움서비스 단위 유연한 Scale-out
조직기능 중심 조직 구조비지니스 중심 DevOps 구조
장점배포, 테스트 표준화된 방식으로 관리 용이서비스 단위 빠른 개발, 배포 용이
단점One Codebase로 의존성이 높아 신규 개발 어려움분산시스템에서 트랜잭션 관리 어려움

MSA 적용 방안

  • Istio 등 서비스 메쉬를 도입하여 MSA 간 서비스 디스커버리, 라우팅, 보안, 로드밸런싱 등 처리

MSA 도입시 고려사항

  • MSA 전환시 네트워크 지연시간이 추가되므로 성능에 민감한 시스템일 경우 도입을 신중히 검토해야함

테스트 커버리지, 코드 커버리지

· 3 min read

테스트 커버리지와 코드 커버리지의 개념

  • 테스트 커버리지: SW 테스트시 얼마나 많은 기능이 테스트되었는지를 측정하는 지표
  • 코드 커버리지: 코드의 각 구문이 테스트 중 얼마나 실행되었는지 측정하는 지표

테스트 커버리지, 코드 커버리지 구성요소, 적용방안

테스트 커버리지, 코드 커버리지 구성요소

구분커버리지비고
테스트 커버리지기능 커버리지요구사항별, 유스케이스, 시나리오
-사용자시나리오 커버리지UI, 통합, 시스템
코드 커버리지라인 커버리지코드라인, 구문, 조건
-함수 커버리지함수 호출, 함수 내부
-분기 커버리지조건, 결정, 다중 조건

테스트 커버리지, 코드 커버리지 적용방안

구분적용방안비고
테스트 커버리지테스트 계획 단계부터 목표 수립테스트 관리도구 활용
-테스트 실행시 커버리지 측정 보고서 작성-
코드 커버리지코드 커버리지 측정도구 활용적정분석도구 통합
-테스트 실행 후 커버리지 분석CI/CD 통합

커버리지 측정시 고려사항

  • 비용과 시간, 테스트 품ㅈ딜을 고려한 현실적인 커버리지 목표 설정 필요