본문으로 건너뛰기

Full Stack JavaScript Developer | Half-time Open Sourcerer.

View All Authors

데이터옵스, 데브옵스

· 약 3분

130

데이터옵스, 데브옵스 개념

  • 데이터옵스: 데이터 분석/관리 프로세스DevOps 원칙을 적용하여 분석 처리의 효율성을 높이는 방법론
  • 데브옵스: 개발과 운영을 통합하여 SW개발주기를 단축하고 품질을 향상시키는 방법론
  • 데이터 요구사항, 비지니스 요구사항실시간으로 대응하기 위해 필요성 대두

데이터옵스, 데브옵스 개념도, 구성요소, 적용방안

데이터옵스, 데브옵스 개념도

데이터옵스, 데브옵스의 구성요소

구분데이터옵스데브옵스
목표데이터 파이프라인 자동화개발, 배포, 운영 자동화
프로세스데이터 수집, 저장, 처리, 분석, 시각화, 품질관리계획, 개발, 빌드, 테스트, 배포, 운영, 모니터링
조직데이터엔지니어, 데이터과학자, 데이터분석가, DBA개발자, QA엔지니어, 보안엔지니어, 시스템엔지니어
도구Apache Airflow, SparkJenkins, GitLab
협업기업 전체 데이터 관련 부서IT부서
기대효과스토리지, 워크플로우, 데이터파이프라인 최적화짧은 개발주기, 지속적 통합, 배포

데이터옵스의 추가적인 고려사항

  • AI를 활용하는 MLOps로까지 확장하여, 데이터 기반의 의사결정을 더 빠르게 가져갈 수 있음.

소프트웨어 안정성 분석

· 약 4분

131

소프트웨어 안정성 분석 개요

  • 각 개발 수명주기에서 안전 보증, 확인 활동 수행
  • SW시스템의 오류, 장애, 실패를 예방하고, 위험을 회피, 전가, 감수, 수용하기 위해 시스템 위험요소를 식별하고 평가하는 과정.
  • IoT와 안전필수시스템(자율주행, UAM 등)의 기능적 사고로 인한 인명피해방지를 위해 필요

소프트웨어 안정성 분석 주요 기법

FTA, Fault Tree Analysis

  • 시스템 주요 실패 이벤트를 트리구조롤 분석하여 원인 규명
  • Top-Down 방식
  • 분석범위의 정의 및 분석수준의 결정 -> 대상제품의 특성 파악 -> 정상사상 정의 -> 결함수의 구성 -> 결함트리의 정성적 분석 -> 결함트리의 정량적 분석 -> 분석결과의 평가 및 보고

FMEA, Failure Mode and Effects Analysis

  • 분석 과제 정의 및 분석 준비 -> 분석 실시 -> 분석 결과의 정리 및 심층 분석

HAZOP, Hazard and Operability study

  • 목적 및 분석범위 설정 -> 분석팀 구성 -> 예비조사 -> 브레인스토밍 -> 분석결과 기록

소프트웨어 안정성 분석시 고려사항

  • ISO 26262 등 해당 산업의 규제 및 표준을 준수하여 분석 수행

통합테스트

· 약 4분

131/3/3

통합테스트 개요

통합테스트 개념

  • 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트 방법

통합테스트 필요성

  • 시스템에서 일부 모듈만 새로 구축하는 경우 안정성을 위해 통합테스트 필요.
  • 연결된 외부 모듈의 테스트 환경이 제공되지 않을 경우 상위 모듈이면 테스트 드라이버로 모킹, 하위 모듈이면 테스트 스텁으로 모킹.

통합테스트의 절차, 통합방식 비교

통합테스트의 절차

  • 통합계획 수립시 통합 방식 결정
  • 모듈 통합시 테스트 드라이버, 테스트 스텁 사용

통합테스트 비점진적 통합방식, 점진적 통합방식 비교

구분비점진적점진적
개념프로그램을 이루는 각 모듈을 하나로 통합하여 테스트 수행완성모듈을 기존 모듈과 하나식 통합하면서 테스트 수행
종류빅뱅테스트하향식, 상향식, 샌드위치 테스트
장점소규모 적합, 절차 간단오류 발견용이, 오류시 직전 통합테스트 모듈 확인
단점오류 및 원인파악 어려움더미모듈, 테스트스텁, 테스트드라이버 개발 리소스 필요

점진적 통합을 위한 테스트 드라이버, 테스트 스텁 비교

구분테스트 드라이버테스트 스텁
개념하위모듈 호출, 상위모듈로 데이터 전달용 가상 모듈하위모듈 기능 대체 가상 모듈
활용하위모듈이 있으나 상위모듈 없는 경우, 상향식상위모듈 있으나 하위모듈 없는 경우, 하향식
목적하위 모듈 동작 검증상위 모듈 동작 검증
예시가입테스트시 인증서버 모듈가입 페이지 없는 경우 기능 모방
-서버 가상모듈 제작클라이언트 가상 모듈 제작

통합테스트 고려사항

  • 일관된 기준 데이터를 각 스테이지별로 두어 데이터 정합성으로 인한 테스트 이슈 방지

리팩토링

· 약 2분

129

리팩토링 개요

리팩토링 개념

  • 외부적 기능은 수정하지 않고, 내부를 단순화하여 유지보수성을 향상시키는 기법

리팩토링 필요성

  • 애자일 개발 방법론의 도입으로 TDD를 기반으로 코드스멜을 제거하기 위한 리팩토링의 중요성이 강조됨.

리팩토링의 개념도, 세부절차, 적용방안

리팩토링의 개념도

리팩토링의 세부절차

구분내용비고
리팩토링 대상선정코드스멜을 통해 개선 필요 코드 선정중복 코드, 긴 메소드명 등
테스트코드 작성로직의 기대결과를 테스트로 작성TDD
리팩토링리팩토링 후 코드스멜 발생시 반복메소드 분리 등

리팩토링의 적용방안

구분내용비고
결합도 측면이동패키지 재구성, 메소드 이동
-분리기능 분리 별도 클래스화, 인터페이스 분리
응집도 측면일반화중복 메소드 제거
-통합공통 필드 수퍼 클래스 통합
가독성 측면재명명목적과 이름이 다른 경우
-주석테스트코드만으로 설명할 수 없는 경우

리팩토링시 고려사항

  • sonarlint, eslint 등 정적분석 도구를 활용하여 가독성, 복잡도 등 코드스멜 감지 및 수정 자동화

아키텍처 스타일, 디자인 패턴 비교

· 약 4분

131

아키텍처스타일과 디자인패턴의 개념

  • 아키텍처스타일: SW를 구성하는 서브시스템, 컴포넌트 간 관계를 분리하는 시스템 구조 스타일
  • 디자인패턴: SW개발 과정에서 발견된 설계의 노하우를 재사용하기 좋은 형태로 정리한 패턴

아키텍처스타일, 디자인패턴의 관계도, 주요 유형

아키텍처스타일, 디자인패턴의 관계도

아키텍처스타일의 주요 유형

구분내용비고
Layered Architecture소프트웨어를 계층으로 나누어 각 계층이 특정 기능을 담당하며 상위 계층이 하위 계층에 의존하는 구조MVC 패턴
Client-Server요청-응답 구조, 주로 네트워크 기반 애플리케이션에서 사용웹 애플리케이션
Microservices독립적으로 배포 가능한 작은 서비스들로 구성된 아키텍처로, 각 서비스는 특정 비즈니스 기능을 담당대규모 시스템에
Event-Driven시스템 구성 요소가 이벤트를 발생시키고, 이벤트를 수신하여 처리하는 구조실시간 처리
SOA서비스 단위로 시스템을 구성, 각 서비스는 명확하게 정의된 인터페이스로 통신재사용, 유연성 향상
Serverless요청시 CSP가 자동으로 서버 자원을 할당하고 실행하는 구조AWS Lambda 등
Reactive비동기 데이터 스트림을 사용하여 변화에 빠르게 반응하는 시스템을 구성고성능 실시간 시스템
Pipeline데이터가 여러 단계를 거쳐 처리되는 구조로, 각 단계는 독립적으로 작동하고 데이터를 변환ETL 프로세스 등
Broker클라이언트와 서버가 직접 통신하지 않고 중개자를 통해 통신하는 구조메시지 큐
Peer-to-Peer모든 노드가 동등한 자격으로 통신하고 자원을 공유하는 구조분산 시스템

디자인패턴 주요 유형

구분개념비고
생성패턴객체의 생성방식 결정, 클래스 정의, 구조화, 캡슐화Factory, Builder, Singleton
구조패턴객체 조직화 방법 제시, 객체 구성에 확장성 추가Adaptor, Bridge, Decorator
행위패턴객체 행위를 조직화, 그룹화, 객체와 클래스 연동Strategy, Observer, Visiter, Template

아키텍처스타일, 디자인패턴 적용시 고려사항

  • CBAM, ATAM을 통해 적절한 아키텍처 스타일 선택
  • 디자인패턴이 적용되어있는 프레임워크 사용

CBAM, 비용편익분석 방법

· 약 4분

128

CBAM의 개요

CBAM의 개념

  • Cost Benefit Analysis Method
  • 시스템 아키텍처 의사결정에 있어 시스템 엔지니어와 이해관계자들이 잠재적 비용과 편익을 비교한 SW아키텍처 평가모델

CBAM의 배경

  • SAAM, ATAM의 기술적 측면만 고려한 평가에서 기존 아키텍처 평가 방법의 한계로 비용 측면까지 고려 필요.
    • SAAM: Software Architecture Analysis Method
    • ATAM: Architecture Trade-off Analysis Method

CBAM의 구성도, 세부절차, 활용방안

CBAM의 구성도

  • 비용대비 편익 고려하여 최종 의사결정

CBAM의 세부절차

단계설명예시
목표설정아키텍처 목표 설정프로젝트 기대 성과
비용 추정아키텍처 구현 및 유지 비용 추정리소스, 시간, 노력
편익 추정예상되는 이익 추정기능개선, 비용절감, 성능향상

CBAM의 활용방안

분야설명활용예시
공공공공의 이익을 최대화하기 위한 정책 결정 지원인프라 프로젝트, 사회 서비스 개선 프로젝트
금융투자의 장기적 수익성과 리스크 평가를 위해 사용투자 은행에서의 대규모 투자 프로젝트 평가
민간비용 대비 이익 분석을 통해 사업의 경제적 타당성 확인기업에서의 신제품 개발 또는 사업 확장 결정

CBAM과 ATAM의 비교

구분CBAMATAM
평가기준비용과 편익 정량적 분석아키텍처 품질 속성 평가
특징품질속성과 경제성품질속성 상충관계
관심사항이해관계자 이익아키텍처 품질
결과비용효율적 아키텍처 선택품질요구사항 만족하는 아키텍처 선택
장점비용일정, 위험파악기존시스템 분석가능
단점품질속성 평가 미흡경제성 평가곤란

CBAM 고려사항

  • ATAM 이후 CBAM을 수행하여 품질속성 도출 후 비용편익이 좋은 아키텍처 결정

폭포수 개발 방법론, 애자일 개발 방법론 비교

· 약 4분

131/1/3

폭포수 방법론, 애자일 방법론의 개요

개념

  • 폭포수 방법론: 요구사항 분석, 설계, 구현, 유지보수 과정을 순차적으로 접근하는 개발방법론
  • 애자일 방법론: 고객의 다양한 니즈를 수용하기 위해 스프린트 주기 내 개발하고 변화에 대응하기 위한 개발방법론

배경

  • 급변하는 비지니스 요구사항과 소비자의 니즈 변화에 대응하기 위해 SDLC 와 개발 리드타임이 짧아질 필요가 있음.
  • 전통적인 폭포수 개발 방법론은 변경에 유연하게 대응하지 못하여 애자일 개발 방법론 대두.

폭포수 방법론, 애자일 방법론 개념도, 상세 비교, 적용방안

폭포수 방법론, 애자일 방법론 개념도

폭포수 방법론, 애자일 방법론 상세 비교

구분폭포수 개발 방법론애자일 개발 방법론
프로세스선형 순차적 모델, 단계별 완료 후 다음 단계로 진행, 큰 변경 비용반복적이고 점진적인 접근, 짧은 개발 주기(스프린트)로 진행, 변경 수용 가능
도구요구사항 문서, 설계 문서, 테스트 계획서 등사용자 스토리, 백로그, 번다운 차트 등
기법요구사항 분석, 설계, 개발, 테스트, 배포CI/CD, 스프린트, 스크럼, 칸반
조직명확한 역할 구분(기획자, 디자이너, 개발자, 테스터)자율적인 팀 구성, 크로스 펑셔널 팀

폭포수, 애자일 방법론의 적용방안

구분내용비고
공공대국민 서비스는 전통적인 기능을 제공하는 경우가 많으므로 신 RFP 기반의 폭포수 개발 방법론 도입레거시어플리케이션
금융전통적인 여신/이체 기능과 신규 서비스 기능을 나눠 두 가지 개발 방법론 선택복합적
민간비지니스 니즈에 대응하기 위해 애자일 개발 방법론 도입인터넷 비지니스, 이커머스

인터넷 비지니스에 가까우면 애자일 개발방법론, 전통적인 기능을 제공하면 폭포수 개발방법론 적용.

개발방법론 적용시 고려사항

  • 애자일 방법론은 팀 구성원 역량에 따라 산출물이 크게 차이나므로, 폭포수 방법론과 애자일 방법론을 결합한 하이브리드 방법론 고려 필요

기술사 - 에세이

· 약 5분

에세이

문제를 가지고 아래 내용들을 생각해봐야한다.

  1. 개념적 What: 무엇인가 핵심, 원리, 가치, 결어 (기술, 서비스, 절차 중 하나)
  2. Why: 왜 필요한가
  3. 구체적 What: 세부구성은 무엇인가 아키텍쳐, 구성도 (개념도), 구성요소 (소스, 매커니즘, 결과)
  4. How: 어떻게 구현하는가 Provider, Consumer 관점, 이전에는 뭐가 있었는지
  5. Who: 누가 찾고, 활용하는가
  6. 결론: 향후방안, 예상 이슈, 발전 방향

공통 작성법

  • 문제 내 단락은 줄을 띄우지 않는다.
  • 다음 문제는 2줄을 띄운다.
  • 체점자에게 파워포인트 프리젠테이션을 하는 것이다.

용어형

1교시

문1)
I. ~의 개요
- 개념
개념도 또는 관계도
- 시사점 || 배경
II. ~의 구조, 핵심요소, 적용방안
가. ~의 구조 (구성도, 개념도)
나. ~의 핵심요소
가.에 그린 다이어그램을 3단 표로 작성
| 구분 | 내용 | 비고 |
| --- | --- | --- |
| - | - | - |
다. ~의 적용방안
| 구분 | 내용 | 비고 |
| --- | --------------- | --- |
| 공공 | (대국민서비스 향상) | - |
| 금융 | (가용성) | - |
| 민간 | (이윤추구) | - |
어려울 경우
| 구분 | 내용 | 비고 |
| ---------- | --- | --- |
| 비지니스 관점 | - | - |
| 기술 관점 | - | - |
| 보안 관점 | - | - |
III. ~의 성공을 위한 추가적인 고려사항 || 성공 포인트
- 1
- 2 "끝"


// 두줄 띄우고 다음 문제

서술형

2-4교시, 기승전결

문1)
답)
I. ~의 개요
가. ~의 개념
나. ~의 시사점 || 필요성 || 중요성 || 배경 || 목적

II. ~구조, 핵심요소, 적용방안
가. ~의 구조 (구성도, 개념도)
나. ~의 핵심요소
가.에 그린 다이어그램을 3단 표로 작성
| 구분 | 내용 | 비고 |
| --- | --- | --- |
| - | - | - |

III. ~의 적용 전략, 접근 전략
가. ~의 적용 전략
SWOT 분석
나. ~의 적용 방안
| 구분 | 내용 | 비고 |
| --- | --------------- | --- |
| 공공 | (대국민서비스 향상) | - |
| 금융 | (가용성) | - |
| 민간 | (이윤추구) | - |
어려울 경우
| 구분 | 내용 | 비고 |
| ---------- | --- | --- |
| 비지니스 관점 | - | - |
| 기술 관점 | - | - |
| 보안 관점 | - | - |

IV. ~의 성공을 위한 추가적인 고려사항 || 성공 포인트
- 1
- 2 "끝"


// 두줄 띄우고 다음 문제

주제별

방법론

  • 프로세스 Process
  • 도구 Tool
  • 기법 Methods
  • 조직 Organization

ISO/IEC 표준

  • 표준 Standard
  • 프로세스 Process
  • 조직 Organization
  • 기술 Technology

보안

  • 공격매커니즘
  • 공격절차
  • 원인
  • 대응방안

신기술

  • 구성도
  • 구성요소
  • 적용방안
  • 적용사례

법/제도

  • 배경
  • 개념도
  • 핵심요소
  • 적용방안

위험

  • 프로세스
    • 식별
    • 분석
    • 평가
    • 대응
  • 대응방안
    • 회피 (Avoidance)
    • 전가 (Transference, 제 3자 책임)
    • 감수 (Mitigation)
    • 수용 (Acceptance)
    • 이관 (Escalation)

SW

  • 분석
  • 설계
  • 구현
  • 테스트
  • 유지보수

참조

aggrid 디버깅

· 약 1분

AGGRID

  • 풀스펙을 지원하는 그리드
  • 대부분의 기능들은 엔터프라이즈 모듈로 분기되어있다.

모듈정보

  • Modules
    • ag-grid-react는 통 패키지
    • @ag-grid-community, @ag-grid-enterprise 스코프 하위는 모듈
  • Modules - Example

데이터 페칭

  • onGridReady 이후 실행
const onGridReady = useCallback((params: GridReadyEvent) => {
fetch("https://www.ag-grid.com/example-assets/olympic-winners.json")
.then((resp) => resp.json())
.then((data: IOlympicData[]) => setRowData(data));
}, []);

코드 예시

  • Full Spec
  • 여기서 보는 게 낫다. 문서가 최신화 되어있지 않다.

기술사 - 알고리즘

· 약 8분

알고리즘

트리

이진탐색트리

  • Binary search
  • O(logn)O(\log n)

균형이진탐색트리

  • AVL Tree: Adelson-Velskii-Landis Tree
  • Balance Factor: BF(T)=HlHrBF(T) = H_l - H_r = T의 왼쪽 서브트리 높이 - T의 오른쪽 서브트리의 높이
  • BF(T)가 -1, 0, 1 중 하나를 만족해야함.
  • LL, LR, RR, RL 용어를 보기보단 그림을 보고 이해해야함.
  • 최적화되어 O(logn)O(\log n) 탐색 시간 보장

m-원 탐색트리

  • m-way Search Tree, Multiway Search Tree

B- 트리

B* 트리

  • B애스터 트리

B+ 트리

  • 모든 키의 값이 단말 노드에 순차 나열된다, 링크드 리스트로

Red Black 트리

T 트리

  • AVL Tree + B tree

그래프

  • Node: 정점, Edge: 간선
  • 신장트리: Spanning Tree
    • 그래프의 모든 정점과 일부 간선을 포함한 트리로 표현
    • T=(V,F)T = (V, F)

최소 신장 트리

  • Minimal Spanning Tree
  • 가장 적은 비용/거리로 그래프의 모든 정점을 연결할 수 있는 구조

프림 알고리즘

  • Prim
  • 노드 기준
  • O(n2)O(n^2)

크루스칼 알고리즘

  • Kruscal
  • 엣지 기준
  • 간선 최소 개수: O(nlogn)O(n \log n)
  • 간선 최대 개수: O(n2logn)O(n^2 \log n)

최단경로 문제

  • Shortest Path

다익스트라

  • Dijkstra
  • 노드 수가 n이라면 n-1개의 목적지가 모두 확정될 때까지 반복
  • 다익스트라를 노드마다 반복한게 프림 알고리즘

벨만포드

  • 가중치가 음수일 경우, 불이익이 있는 경우 다익스트라 알고리즘으로 최단 경로가 계속 갱신되므로 이를 방어하기 위한 방법

정렬

선택 정렬

  • Selection Sort
  • O(n2)O(n^2)
  • 가장 작은 값을 순서대로 찾아내어 첫 번째 배열부터 채워나가며 정렬

버블 정렬

  • Bubble Sort
  • O(n2)O(n^2)
  • 왼쪽에서 오른쪽으로 비교해가며 오름차순으로 자리를 교환하여 정렬

합병 정렬

  • Merge Sort
  • O(nlogn)O(n \log n)
  • 분할 정복
  • 데이터 분포의 영향을 덜 받는다, 최악의 경우에도 효율적.

퀵 정렬

  • Quick Sort
  • O(nlogn)O(n \log n)
  • 피봇을 정한다. 전체 값을 읽어 중간값이나 몇 개의 값의 평균을 피봇으로 정함.
  • 프로그래밍 랭기지에서는 왼쪽에서 큰 값, 오른쪽에서 작은 값을 찾는 방식으로 구현.

삽입 정렬

  • Insert Sort
  • O(n2)O(n^2)
  • 추가적인 메모리를 안 씀: in-place sort

힙 정렬

  • Heap Sort
  • O(nlogn)O(n \log n)

Max Heap

Min Heap

Min-Max Heap

Deap

  • 왼쪽은 Min Heap, 루트는 비어있음, 오른쪽은 Max Heap
  • 왼쪽 서브트리의 임의 노드는 오른쪽 서브트리 같은 위치에 있는 노드와 대응된다.

기수 정렬

  • Radix Sort
  • O(n)O(n)

MSD

  • Most Significant Digit

LSD

  • Least Significant Digit

탐색

깊이 우선 탐색

  • DFS, Depth First Search
  • Solution 을 찾기 위해 Candidate Solution 인 노드들을 순회
  • Optimal Path (최적의 해)가 아닐 가능성이 높음, 보장할 수 없음.

너비 우선 탐색

  • Breadth First Search
  • Optimal Path를 보장
  • 탐색 과정에서 나타나는 모든 상태를 저장해야하기 때문에 메모리 비효율적.

최고 우선 탐색

  • Best-First Search

백트래킹

  • 탐색을 진행하면서 필수적인 부분의 그래프만 유지하여 시간과 공간을 절약.
  • 노드 부모로 돌아가서 다음 자식 노드의 검색을 계속.

N-Queen 문제

0-1 배낭문제

인공지능

휴리스틱 탐색

  • Heuristic Search
  • 논리적으로, 수학적으로 증명할 수 없으나 경험이나 직관에 의해 효율적으로 해를 얻을 수 있으리라는 기대를 갖게하는 근거에 의한 방법
  • 사람처럼 학습을 통해서 직관적으로 탐색

Hill-Climbing 탐색

  • 남은 경로에 대한 비용만 고려
    • 가장 가파른 길이 정상까지 가장 짧으니까
    • 가파른 다음에 내리막일 수도 있고, 평지일 수도 있고, 다음 가파른 길을 찾을 수 없을 수도 있음
  • 남은 길 중에 가장 가파른 길을 찾는 평가함수 사용
    • Evaluatio Function, Objetive Function

A* 탐색

에이전트

  • 특정 목적을 가지고 자동으로 해결해주는 소프트웨어

신경회로망

K-means 클러스터링

패턴인식

딥러닝

선형회귀

  • Linear Regression
  • 기울기: 가중치, Weight
  • 절편: 바이어스, Bias
  • 최소 제곱법: LSM, Method of Least Squares
  • 평균 제곱근 오차: RMSE, Root Mean Square Error
    • 오차의 값이 더 이상 줄어들지 않을 때가 최적화
  • 경사하강법

다중선형회귀

로지스틱회귀

시그모이드 함수

  • Sigmoid Function

단층 퍼셉트론

다층 퍼셉트론

오차 역전파 알고리즘

  • Back Propagation

다중 분류 문제

  • 원 핫 인코딩
  • 소프트맥스

과잉 적합, 과소 적합

  • over fitting, under fitting
  • 해결방안
    • 조기 종료: Early Stopping
    • 가중치 규제 방법: Weight Regularization
    • 드롭 아웃: Drop out
    • 데이터 증강: data augmentation
    • 앙상블: Ensemble

유전자 알고리즘

  • 재생산: Reproduction
  • 교차: Crossover
  • 치환
  • 교배/돌연변이: Mutation

그래픽 알고리즘

베지어 곡선

압축 알고리즘

Run-Length 코딩

LZ77

허프만 코딩

논리회로

논리게이트

불대수

카노맵

전가산기

반가산기

비교기

베이즈 이론

조건부 확률

베이즈 정리