25
- 중간 보고 - 고객과 함께 성장하는 No.1 IT Transformation Leader PostgreSQL 마이그레이션 기업 사례

Pg day seoul 2016 session_02_v1.0_ff

Embed Size (px)

Citation preview

Page 1: Pg day seoul 2016 session_02_v1.0_ff

- 중간 보고 -

고객과 함께 성장하는

No.1 IT Transformation Leader

PostgreSQL 마이그레이션

기업 사례

Page 2: Pg day seoul 2016 session_02_v1.0_ff

소개 I.

2010~ : PostgreSQL과 랑데뷰 (ver. 8.3~)

~현재 : k사 오픈소스기술팀

Page 3: Pg day seoul 2016 session_02_v1.0_ff

축하 인사 II.

PostgreSQL 스무번째돌잒치를 축하합니다. :)

http://allfreedesigns.com/vector-world-maps-free/ http://www.thinkstockphotos.co.kr/royalty-free/toe-tag-pictures/?countrycode=KOR

Page 4: Pg day seoul 2016 session_02_v1.0_ff

제 이야기는... III.

1. Big Data / Internet of Things / Data warehousing

2. Migrations from other databases to PostgreSQL

3. Operations and administration

4. Performance and feature implementation

5. Tuning PostgreSQL for different work loads

6. Replication, clustering, HA, sharding

7. Tools and utilities for PostgreSQL

8. Benchmarking and hardware, tuning

9. PostgreSQL community and hacking

10. Use cases/Case studies (novel ways in which PostgreSQL is used)

11. PostgreSQL features in development

12. App dev’s perspectives on Postgres

13. Integrating PostgreSQL with 3rd-party software

14. Location-aware and mapping software with PostGIS

15. Research and teaching with PostgreSQL

Page 5: Pg day seoul 2016 session_02_v1.0_ff

순서 IV.

1. 이관이란? 1. 정의

2. 개요

3. 범위

2. 기업 사례 1. 도입 및 확산 (전략)

2. 대상 선정 (사업기획)

3. 이관수행

3. 배운 것 1. 창의력과 조합력

4. 결론

http://www.brettonwoodsproject.org/wp-content/uploads/2015/07/Observer_Summer_Illustration.jpg

Page 6: Pg day seoul 2016 session_02_v1.0_ff
Page 7: Pg day seoul 2016 session_02_v1.0_ff

이관 정의 01-1

1. 이관(Migration)이띾 ?

: 하나의 운영 홖경으로부터 더 나은 운영 홖경으로 옮겨가는 과정을 뜻하는 정보통싞 용어

… [상략]

그러나 데이터베이스의 경우 새로운 데이터베이스가 이전의 데이터베이스와 구성 요소가 다를 수도 있기 때문에 실행 파일들을 처리할 수 있는 프로그램이 필요한 경우도 있다. 따라서 이전의 데이터베이스를 마이그레이션할 때는 새로운 데이터베이스와 공통된 형식으로 데이터를 변홖하는 작업이 필요하다. [네이버 지식백과] 마이그레이션 [migation] (두산백과)

Page 8: Pg day seoul 2016 session_02_v1.0_ff

이관 개요 01-2

1. 마이그레이션 단계

http://www.oss.kr/oss_repository12/606089 / 2014 년 개정판 공개SW 마이그레이션 가이드

Page 9: Pg day seoul 2016 session_02_v1.0_ff

이관 범위 01-3

1. DB 서비스 이관 범위 1. Schema (DB Object)

2. Data

3. SQL (App. logic)

AS-IS TO-BE

• DB Data 이관 횟수 – 데이터 테스트 이관(1차)

– 운영전홖 CutOver(2차)

SQL Data

Schema

Data

Page 10: Pg day seoul 2016 session_02_v1.0_ff
Page 11: Pg day seoul 2016 session_02_v1.0_ff

왜 마이그레이션을 하나요? 02

1. 비용절감 (하드웨어․소프트웨어․지원 및 관리․전력 및 냉방)

2. 현재 예산내의 사업 요구사항 확장 (부분 이관)

3. 조직의 합병․인수 또는 축소(그룹사)

4. 오래되거나 더 이상 제공되지 아니하는 소프트웨어 교체(고도화, EOL)

5. 시스템 통합 (서버․애플리케이션․데이터)

6. 싞기술 도입(예: 가상화/ 클라우드)

7. 성능 향상․안정성

DB1

DB2

DB3

통합DB consolidation

http://www.oss.kr/oss_repository12/606089 / 2014 년 개정판 공개SW 마이그레이션 가이드

Page 12: Pg day seoul 2016 session_02_v1.0_ff

도입 : Who 02-1

1. Top-Down

2. Bottom-Up

Page 13: Pg day seoul 2016 session_02_v1.0_ff

도입 : How-To 02-1

1. 짂보 1. 어려운 것

1. (w/ 개별기능 검증)

2. 적용 확산

2. 보수(수구) 1. 쉬운 것

2. 전체 기능, 성능 세부검토

3. (난이도 있는 서비스도) 적용 확산

• 전홖을 추짂하는 담당자의 영향력(기술역량) 혹은 스타일.

• 그 스타일을 허용하는 그 기업 문화에 따라. http://http://s3.amazonaws.com/babypips-media-production/images/2016/05/grade14-hawks-vs-doves.png

Page 14: Pg day seoul 2016 session_02_v1.0_ff

대상선정 : What 02-2

1. 전홖목적에 맞는 후보군을 선별하여 추짂

2. 손쉬운 이관 작업(기술 호홖 혹은 workaround 로 대체 가능한 난이도)

3. (AS-IS 현황을 잘 알거나 혹은) AS-IS 관렦자 혹은 담당 관리자의 적극성에 따라

RAC

Pro*C

Parallel Hint

XA

Windows

Function DBlink

Hash

Join

Online

Backup

Page 15: Pg day seoul 2016 session_02_v1.0_ff

이관수행 : 실패 02-3

1. AS-IS (ORACLE) 문제 1. 깨짂 글자 및 제어문자(개행) 혺재

2. 특정 하나의 Delimiter 값을 지정하기 어려울 정도로 다양한 문자가 실 데이터에 포함

2. TO-BE (PostgreSQL) 문제 1. 깨짂 것은 절대 넣을 수 없음

2. Delimiter 는 오직 한 문자만 허용

(a single one-byte charater)

TO-BE D a t a X

Page 16: Pg day seoul 2016 session_02_v1.0_ff

이관수행 : 정제 작업 02-3

1. 데이터 정제를 위한 작업 수행 원칙 1. PostgreSQL에 데이터를 최종적으로 넣을 수 있도록 아래 2가지 단위가 구분.

1. 한 row 단위

2. 한 칼럼 단위 (delimiter 는 최종 한 문자)

2. 최대한 기졲 데이터의 누락은 없어야 한다. 1. 부득이 정제중에 발생되는 데이터 변경(깨짂,&제어문자)에 대한 의사결정이 필요.

column1 column2 column3 column4

asdf gh Jkl;\n\r ‘

\n\t\c\m `!@”#$ %^&*()\n -=‘; /.,

가나다▤ select◀우 #few post▦^M

?AμA¥ Aμ A°A…A?A€ μðA×A½i¿½i °øAeAUμa

Issue

개행문자 삽입

한 문자 delimiter 정의 불가

이미 깨져 보졲되던 데이터

명시적이지 않은 인코딩 변경

Page 17: Pg day seoul 2016 session_02_v1.0_ff

이관수행 : 정제 작업(cont.) 02-3

• Export用 Procedure 별도 생성 – Delimiter(AS-IS)를 여러 문자로 별도 지정

– 한 row의 시작문자, 끝문자 특정 문자로 별도 지정 export

refine

import

1

2

3

• 데이터 정제 작업 – 이미 깨져 입력된 문자는 drop

– 인코딩 명시적 변홖

– Delimiter(TO-BE)와 동일한 데이터 변경

– 데이터내 제어문자(개행) 삭제 후, rows별 개행처리

• Import用 스크립트 생성 – 데이터 이관을 위한 Engine 튜닝

Page 18: Pg day seoul 2016 session_02_v1.0_ff

이관수행 : 이관 전략 02-3

• 최종 이관의 주안점 – Downtime 최소화하여 CutOver

– Rollback 고려

AS-IS

strategy

TO-BE

• 데이터 이관 전략 – 테이블별 이관방법 선택

• 선행 / 온라인 / 후행 / 제외(로그)

– 병렧 처리 • 시갂 단축을 위한 병렧작업 분산

– AS-IS 서비스 영향 최소화

• DBA 측면 – 이관을 위한 DB Engine 튜닝

– 데이터 import후, 제약사항(Index,constraint) 생성

– analyze(통계갱싞)

– copy freeze (vacuum freeze)

Page 19: Pg day seoul 2016 session_02_v1.0_ff

이관수행 : 완료 02-3

1. 동일 구조 서비스의 수십 여개 시스템에 적용 1. 전국 단위 서비스의 각 센터별 장비 전홖

2. 큰 비용 절감 효과

2. 성능 개선: 가벼운 로직 처리에 강점

http://www.d-maps.com/carte.php?num_car=50441&lang=en

X처리

Y실패

Page 20: Pg day seoul 2016 session_02_v1.0_ff
Page 21: Pg day seoul 2016 session_02_v1.0_ff

창의력과 조합력(OS Utility 홗용) 03-1

1. 갂단한(부족한) OS Utility 조합 사용(pipeline 통한 정제 작업으로 시갂 단축)

2. 느린 IO 를 최대한 배제하거나 끌어올려서 단축

Utility Description

strings print the strings of printable characters in files.

iconv Convert encoding of given files from one encoding to another

split split a file into pieces

sed stream editor for filtering and transforming text

Utility Description

ionice get/set program io scheduling class and priority

Page 22: Pg day seoul 2016 session_02_v1.0_ff
Page 23: Pg day seoul 2016 session_02_v1.0_ff

결론 04-1

1. 기업 홖경에는 상용SW가 쓰여야 하는 곳도 분명히 졲재합니다. 1. 그러나, 그 제품 비용을 지불한 만큼 모듞 곳에서 적재적소 쓰일까요?

2. 불필요하게 지불되는 영역에서는 오픈소스SW가 하나의 대안이 될 수 있습니다. 1. 기업 경영 입장에서는 이 대안은 해볼만한 시도입니다.

3. 여러분은 어떻게 하시겠습니까? 1. 끌고 가실 건가요? 끌려 가실 건가요?

http://blog.lifeway.com/biblestudiesforlife/files/2013/06/151536633-1024x681.jpg

Page 24: Pg day seoul 2016 session_02_v1.0_ff
Page 25: Pg day seoul 2016 session_02_v1.0_ff