프로젝트 관리 도구 및 기법 목록

프로젝트 관리 간 사용되는 도구 및 기법 목록

용도 도구 및 기법
데이터 수집 벤치마킹
브레인스토밍
점검기록지
점검목록
핵심전문가 그룹
인터뷰
시장조사
설문지 및 설문조사
통계적 표본추출
데이터 분석 대안분석
기타 리스크 모수 평가
가정 및 제약 분석
품질비용
비용 편익 분석
의사결정나무 분석
문서 분석
획득가치 분석
영향관계도
반복(iteration) 번다운 차트
제작 구매 분석
성과검토
프로세스 분석
제안서 평가
회귀분석
예비분석
리스크 데이터 품질평가
리스크 확률영〮향 평가
근본원인분석
민감도 분석
시뮬레이션
이해관계자 분석
SWOT 분석
기술적 성과 분석
추세분석
차이분석
가정형 시나리오 분석
데이터 표현 친화도
인과관계도
관리도
순서도
계층구조형 도표
히스토그램
논리 데이터 모델
매트릭스도
매트릭스 기반 도표
마인드매핑
확률 영향 매트릭스
산점도
이해관계자 참여 평가 매트릭스
이해관계자 매핑, 표현
텍스트 기반 도표
의사결정 다기준 의사결정 분석
투표
의사소통 스킬 피드백
프리젠테이션
대인관계 및 팀 기술 적극적 경청
의사소통 양식 평가
갈등 관리
문화적 인식
의사결정나무 분석
감성지능
촉진
영향력 행사
리더십
회의관리
동기 부여
협상
네트워킹
명목집단기법
관찰, 대화
정치적 인식
팀 구성
미분류 광고
애자일 릴리즈 기획
유사산정
감사
입찰자 회의
상향식 산정법
변경통제 도구
클레임 행정관리
동일장소배치
의사소통 방법
의사소통 모델
의사소통 요구사항 분석
의사소통 기술
배경도
우발사태 대응 전략
원가합산
주공정법
분할
의존관계 결정 및 통합
Design for X (DfX)
전문가 판단
자금조달
자금한도 조정
기본규칙
선례정보 검토
개인 및 팀 평가
정보 관리
검사
지식 관리
선도 및 지연
회의
조직론
모수산정
사전배정
선후행도형법
문제해결
제품분석
프로젝트관리정보 시스템
프로젝트 보고
촉발(prompt) 목록
프로토타입
품질 개선 방법
인정과 보상
불확실성 표현
자원최적화
리스크 분류
연동기획
일정단축
일정 네트워크 분석
공급자 선정 분석
기회에 대한 전략
전체 프로젝트 리스크에 대한 전략
위협에 대한 전략
테스트 및 검사 계획수립
테스트, 제품 평가
3점 산정
완료성과지수
교육
가상팀

출처: PMBOK Guide 6th Edition

Apache Kafka vs AWS Kinesis

Apache Kafka

apache kafka에 대한 이미지 검색결과

Definition

2010년 LinkedIn에서 플랫폼 사용자들의 수 많은 구인구직 정보들을 한 곳에서 효율적으로 관리하기 위해 개발한 Open Source Message Queue System.

Context

개발 배경 스토리는 아래와 같다. (출처: InsideBIGDATA)

  1. LinkedIn 의 Architecture Migration (from Monolith to Microservice)
  2. Mid-tier Service의 Data Model/Back-end Service로 API 접근 횟수 증가
  3. 이를 Service 별로 처리하기 위한 Service 별 여러 Data Pipeline들을 구축
  4. Site Traffic에 따라 개별 Data Pipeline들이 Autoscaling 하지 못하는 문제 발생
  5. 이에 Autoscaling이 가능한 단일 Distributed Pub-Sub Platform 개발 필요 발생
  6. 아래 Design Principles에 입각하여 개발
    – 심플한 API (producers & consumers양측 모두)
    – 높은 정보처리량(throughput)
    – Scale-out 방식 아키텍쳐

Use-case

현재 Kafka를 사용하는 기업 (출처 : Apache Kafka)
LinkedIn, Twitter, NetFlix, Spotify, Uber, Goldman Sachs, PayPal, Airbnb …
*Globally하게 Tech-savvy한 기업들.. Open Source 운용에는 DevOps팀 또는 그에 준하는 인력이 필요하다고 여실히 보여진다.

작동 방식

Kafka 의 작동 방식에 관해서는 DevTimes Blog 에 깔끔하게 잘 설명되어 있으니 참고.
기존 Message Queue System 과의 차이점에 대해 간략히 요약하자면,

  • Producer ~ Broker : 개별 메시지 전송 뿐만 아니라 Batch 전달 가능
  • Broker :  Memory 가 아닌 File System에 메시지 저장
  • Broker ~ Consumer : Consumer 메시지 Push 받는 방식이 아닌 Pull 하는 방식

장점

쉽고 빠르고 강력하고 확장성 좋다.

약점

관리가 어렵다.

.

AWS Kinesis
관련 이미지

 

Definition

AWS의 Streaming Data를 위한 Platform

Context

Kinesis = re-brand(Apache Kafka) + service*

AWS Kinesis 는 Apache Kafka 를 reference하여 개발되었다.
위에서 service* 라고 함은 크게 두 부류로 파악된다.

  1. 관리 서비스  (Kafka 의 약점)
    – 서버 집합 모니터링·확장·관리
    – 소프트웨어 스택 유지·관리
    – 클러스터 보안 관리
  2. 타 AWS 서비스와 연계 편의성

.

결국 Kafka 나 Kinesis 의 역할은 둘다 마찬가지로 데이터 파이프라인이며  목적은 데이터 이동간 Seamless, Real-time 효익 달성에 초점이 맞추어져 있다.

Kinesis 는 비즈니스 용도에 따라 그에 특화된 서비스 상품을 출시했다.

  1. AWS Kinesis Video Stream : 영상 처리 및 분석 용도
  2. AWS Kinesis Data Stream : 범용
  3. AWS Kinesis Firehose : 저장(to AWS S3, Redshift, Elastic Search) 용도
  4. AWS Kinesis Data Analytics : 분석 용도

Use case

현재 Kinesis 를 사용하는 기업 (출처 : Stackshare)
Instacart, Lyft, Intuit, Zillow, Tilt, AgoraPulse, Custora, GoGuardian …

기타 참고

주요 개념 비교 (출처 : IT Cheer Up)

Concepts Apache Kafka AWS Kinesis Data Streams
Data Storage Partitions Shards
Data Ordering In partition level In shard level
Data Retention No maximum (configurable) 1 to 7 days (default is 24 hours)
Data Size Per Blob Default 1MB (but can be configured) Maximum 1 MB
Partition/Shard Modification Increase only and does not repartition existing data Re-shard by merging or splitting shards
Partition/Shard Limitation No limit. Optimal partitions depend on the use case 500 shards in US East (N. Virginia), US West (Oregon), and EU (Ireland) regions. 200 shards in all other regions.
Data Replication/DR Cluster mirroring Automatically across 3 Availability Zones
Message Delivery Semantics Kafka guarantees at-least-once delivery by default. Kafka supports exactly-once delivery in Kafka Streams Kinesis Data Streams has at least once semantics
Security Either SSL or SASL and authentication of connections to Kafka Brokers from clients; authentication of connections from brokers to ZooKeeper; data encryption with SSL/TLS Data can be secured at-rest by using server-side encryption and AWS KMS master keys on sensitive data within KDS. Access data privately via your Amazon Virtual Private Cloud (VPC)
Monitoring Yammer Metrics for metrics reporting in the server AWS CloudWatch and CloudTrail
Dependency ZooKeeper DynamoDB
Cost Requires a lot of human support on installation, set up, configuration and clusters management. Setup in weeks Pay and use. Setup in a couple Of hours

Apache Kafa 와  AWS Kinesis Architecture (출처: Cloudurable, AWS)

kafka vs kinesis

참고 링크
Amazon Kinesis 홈페이지
Apache Kafka 홈페이지
Epic Developer 블로그
Medium 블로그

가상머신(Virtual Machine) vs 컨테이너(Container)

*본 내용은 소프트웨어정책연구소 이슈리포트 2018-008 / 안성원 저 요약본입니다.

가상화 개념

가상화(Virtualization)는 물리적인 컴포넌트(Components, HW장치)를 논리적인 객체로 추상화 하는 것을 의미하는데, 마치 하나의 장치를 여러 개처럼 동작시키거나 반대로 여러 개의 장치를 묶어 마치 하나의 장치인 것처럼 사용자에게 공유자원으로 제공할 수 있어 클라우드 컴퓨팅 구현을 위한 핵심기술이다.
가상화의 대상이 되는 컴퓨팅 자원은 프로세서(CPU), 메모리(Memory), 스토리지(Storage), 네트워크(Network)를 포함하며, 이들로 구성된 서버나 장치들을 가상화함으로써 높은 수준의 자원 사용율(물리서버 10~15% vs 가상화 70% 이상) vs 과 분산 처리 능력을 제공할 수 있다.
가상화 개념

가상머신

가상화를 통하여 구현되는 복제된 컴퓨팅 환경.
운용목적1. 하나의 하드웨어위에 동시에 여러 종류의 운영체제나 프로토콜을 실행
운용목적2. 하나의 하드웨어 자원을 여러 사용자에게 분할
운용목적3. 가상화를 통해 분할된 시스템 간 상호 간섭이 없는 독립성(Isolation)을 보장

하이퍼바이저

공유 컴퓨팅 자원을 관리하고 가상머신들을 컨트롤(I/O  명령  처리) 하는 중간관리자.

컨테이너

모듈화되고 격리된 컴퓨팅 공간 또는 컴퓨팅 환경을 의미하며, 시스템 환경 의존성을 탈피하고 안정적으로 구동.

컨테이너 기술의 등장 배경 : 개발한 프로그램이 구동환경의 달라짐에 따라 예상하지 못한 각종
오류를 발생시키는 것을 해결하기 위함 (= 컴퓨팅 환경 간 이식성 ↑)

가상머신과 컨테이너의 차이점

  1. 컨테이너는 가상화에서 하이퍼바이저와 게스트OS 불필요
  2. 대신, 컨테이너는 OS 레벨에서 프로세스를 격리하여‘모듈화된 프로그램 패키지’로써 수행함
  3. 따라서 컨테이너는 가상머신보다 가볍고(수십 MB) 빠름
  4. 이는 더 많은 응용프로그램을 더 쉽게 하나의 물리적 서버에서 구동시키는 것을 가능케 함containers-101.png

초간단 요약

1 컨테이너 = ( 1 하이퍼바이저 + Σ 게스트OS )

표 요약
VM vs Container.JPG

컨테이너 기술 Leading Vendors : 쿠버네틱스(Kubernetes), 도커(Docker)

출처
2018. 12. 10. 제2018-008호 클라우드 가상화 기술의 변화 – 컨테이너 기반의 클라우드 가상화와 DevOps / 안성원 소프트웨어정책연구소
https://cloud.google.com/containers/?hl=ko

아키텍처 유형 별 비교, 장단점 요약

1. 집약형

Keyword : #기간시스템 #Host #MainFrame #범용장비

장점👍 간단한 구성
👍 높은 안정성
👍 고성능
단점👎 높은 도입 및 유지 비용
👎 낮은 확장성

2. 분할형

Keyword : #Server

장점👍 낮은 도입 비용
👍 높은 확장성
단점👎 서버 수 증가에 따른 유지 관리 어려움

2.1. 수직 분할형

Keyword : #역할별분할

2.1.1. 클라이언트-서버

Keyword : #단말기

장점👍 클라이언트 측에서 처리 부담 적음
(=소수 서버로 다수 클라이언트 처리 가능)
단점👎 클라이언트 측 SW 정기 업데이트 필요
👎 서버 부하 집중 시 확장성 한계

2.1.2. 3계층형

Keyword : #Presentation #Application #Data

장점👍 서버 부하 집중 개선
👍 클라이언트 SW 정기 업데이트 불필요
👍 처리 반환에 의한 서버 부하 저감
단점👎 C/S 구성보다 복잡한 구조

2.2. 수평 분할형

Keyword : #Scalability

2.2.1. 단순 수평 분할형

Keyword : #Sharding #Partitioning

장점👍 확장성 향상
👍독립적인 운영
단점👎 데이터 Single View 불가
👎 애플리케이션 업데이트를 양쪽에서 동시에 실시하거나,
처리량 불균등할 경우 서버별 처리량이 불균형해짐

2.2.2. 공유형

Keyword : #RealApplicationClusters

장점👍 확장성 향상
👍 분할된 시스템이 다른 시스템 데이터 참조 가능
단점👎 분할된 시스템 간 독립성 낮음
👎 공유한 계층의 확장성 낮음

2.3. 지리 분할형

2.3.1 스탠바이형

Keyword : #Active-Standby #HighAvailablity #2대이상의물리서버 #Failover

장점👍 물리 서버 고장에 대처 가능
단점👎 리소스 낭비 발생

2.3.2. 재해 대책형

Keyword : #DisasterRecovery

장점👍 재해 대처 가능
단점👎 별도 사이트 서버 구축 비용
👎 애플리케이션 및 데이터 동기화 비용

2.3.3. 클라우드형

Keyword : #SaaS #IaaS #PaaS #DBaaS

장점👍 전개 속도
👍 낮은 초기 구축 비용
단점👎 보안 이슈
👎 네트워크 연장 문제

*위 아키텍처 유형들은 배타적인 관계가 아니며, 대부분의 시스템에서 혼용됨

출처 : 그림으로 공부하는 IR 인프라 구조 / 야마자키 야스시·미나와 요시코·아제카츠 요헤이·사토 타카히코 지음

JSON 관련 R 패키지, jsonlite 너로 정했다

R에서 JSON 파일을 다루는 패키지는 3가지 정도 있다. (글은 이 중 1,2만 다룸)

  1. rjson
  2. jsonlite
  3. RJSONIO

복수의 object들을 포함한 json 파일을 R 로 import 하는 경우, jsonlite가 선호된다.

선호 이유는, import 결과물인 list 형태에서
JSON object의 data.frame 추출이 jsonlite에서 더 용이하기 때문이다.

.

#rjson 으로 import
my_j <- rjson::fromJSON(file=’파일명.json’)

#jsonlite 으로 import
my_jl <- jsonlite::fromJSON(‘파일명.json’)

.

위 코드 실행했을 때 결과는 아래와 같다.

rjson

rjson의 결과(my_j)는 Large list 이고,
jsonlite 의 결과(my_jl)는 일반적인 list 이다.

rjson의 결과(my_j)가 Large list 인 이유는,
json array 내 각각의 object 마다 임의 숫자로 numbering이 부여되기 때문이다. (ex.[1], [2], …)
이 numbering 으로 인해 as.data.frame 을 사용하여 list 에서 data frame으로 변환 시 rjson 에서는 오류가 발생한다.
Error in (function (…, row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 1, 0

반면 jsonlite 에서는 성공적으로 변환된다.

.

결론 : jsonlite 를 쓰자.

 

인용은 아니지만, R json 패키지 관련 참고할 만한 링크 : https://rstudio-pubs-static.s3.amazonaws.com/31702_9c22e3d1a0c44968a4a1f9656f1800ab.html