구조화된 데이터 분석

Joshua_s·2021년 12월 1일
0
post-thumbnail

AWS를 이용한 데이터 분석

AWS를 활용하여 데이터분석을 위한 DB서비스를 제공하고 있으며 빠르게 시스템을 구축하기 위해 다양한 도구가 파트너로부터 제공된다.

인프라 설계사항

1. 고속 데이터 분석이 가능한 DB
2. 단기간에 데이터 연계 구현
3. 오픈 데이터를 효과적으로 취득
4. 스킬 연습기간 단축

레드 시프트 중심의 데이터 분석 시스템 설계

분석 대상 데이터를 저장하는 DB로서 대용량 데이터 검색과 분석에 최적화된 DB서비스인 아마존 레드시프트(Redshift)를 이용한다. 레드 시프트는 대용량 데이터를 열 방향으로 분석 및 집계하는 작업을 효율적으로 수행하도록 만들어진 DB이다.

기존 시스템에서 테이블을 선택하고 끄집어 내어 데이터 연계 구조를 새로 만들면 구축과 응용에 시간이 걸린다. 빠르게 시스템을 구축하기 위해 데이터 통합 도구 플라이데이터 싱크(Flydata Sync)를 사용한다. 플라이데이터 싱크는 MySQL과 레드 시프트 간의 데이터 연계를 쉽게 수행할 수 있는 도구이다.

계절별 일기예보와 같은 데이터를 외부로 부터 취득하기 위해 포맷하고 변환하는 시간이 필요하다. 이러한 불편함을 줄이기 위해 데이터를 오픈 데이터로 제공하는 퍼블릭 데이터셋이라는 DB 서비스를 사용한다. 퍼블릭 데이터 셋에서 데이터의 일부를 EBS 스냅샷 형태로 제공한다. 스냅샷은 작업용 EC2에 연결하여 S3에 복사후 레드시프트에 저장한다.

분석 도구로서는 태블로 소프트웨어의 태블로 데스크톱을 사용한다. 레드시프트에 바로 연결 가능하기 때문에 견결을 위한 커넥터의 개발 없이 분석을 시작할 수 있다. 소규모인 경우 이용료가 저렴하고 별도의 프로그래밍 지식 없이도 사용할 수 있다.

레드시프트

레드 시프트는 대용량 데이터 분석이 필요한 경우 자주 사용된다. 데이터 분석은 대부분 열 방향 데이터 조작을 의미한다. 레드 시프트는 이러한 열 방향 분석 및 집계를 빠르게 처리할 수 있는 DB이다. 게다가 여러 서버에서 분산 처리하는 구조이기 때문에 분석할 데이터양이 늘어도 확장이 자유롭다. 레드 시프트는 (Data WareHouse)나 BI(Business Intelligence)의 기본DB로 적합하다.

레드시프트는 RDS와 마찬가지로 관리형 DB서비스로 제공되기 때문에 서버 구성 및 데이터 중복성과 같은 것들에 신경 쓸 필요가 없다. 스키마를 정의하고 데이터를 저장하여 앱에 사용하면 됩니다.

사용방법
1. AWS관리콘솔에서 레드 시프트를 들어간다.
2. DB이름, 클러스터 크기같은 것들을 지정하여 만든다.
3. 레드시프트를 만든 후에 관리작업을 위한 클라이언트 환경을 만든다
4. EC2에 PostgreSQL클라이언트를 설치한다.(레드시프트는 PostgreSQL 기반으로 만들어져있어서 JDBC, ODBC 드라이버로 접속가능)
5.접속한 뒤 PostgreSQL과 마찬가지로 SQL을 이용해 데이터처리

플라이 데이터를 사용해 데이터 연계

플라이데이터 싱크를 이용하여 레드시프트와 기존 시스템의 데이터를 연계한다. 이때 필요한 데이터만 선택하여 레드시프트에 넣는다.

이후에 업데이트 된 정보를 반영할 수 있어야하는데 데이터가 저장되는 MySQL과 분석데이터를 저장하는 레드 시프트간에 직접 데이터를 동기화 하는 기능은 없다. 이럴때 동기화 프로그램을 만들면 되는데 이렇게하면 시간이 든다. 플레이데이터 싱크는 이러한 부분을 한번에 해결 가능하다.

MySQL로부터 레드시프트에 데이터 동기화를 처리하는 도구로 필요한 테이블만 선택하여 레드시프트에 전송할 수 있다. 또한 데이터가 변결 될 경우 자동적으로 아마존 레드시프트에 반영된다. 동기화 프로그램을 개발할 필요가 없어서 시스템 구축 기간이 단축된다.

사용방법
1. 플레이데이터 싱크를 사용해 데이터를 통합하려면 연계대상인 RDS for MySQL의 바이너리 로그를 사용한다.
2. EC2인스턴스에 플라이데이터 에이전트를 설치해 오리지널 MySQL테이블과 복제할 대상 테이블 이름을 설정한다.
3. 동기화를 시작하면, 플라이데이터는 MySQL과 레드시프트간의 형식 차이에 대한 매핑 테이블을 생성하고 데이터를 전송한다.
4. 필요한 테이블만 연계되도록 설정한다. 이때 AWS VPC를 이용하여 데이터를 연계하는 방식을 사용한다.(보안)
5. 플라이데이터 클라우드에 MySQL과 레드시프트 포트를 열고 연결 설정과 데이터 연계 테이블을 지정하면 플라이데이터 다이렉트가 데이터를 취득하여 레드시프트에 연계한다.

외부 데이터를 가져오는 방법

외부 데이터는 크게 두종류가 있다. 하나는 AWS가 제공하는 퍼블릭 데이터셋, 다른 하나는 퍼블릭 데이터셋에 없느 외부 데이터이다. AWS 퍼블릭 데이터셋 프로그램은 공공의 이익을 위해 데이터를 공개하는 경우 AWS가 비용을 지불하는 프로그램이다. 경제통계 게놈 웹액세스 통계 등 분석 용도로 사용되는 데이터를 EBS 스냅샷이나 S3 버킷, MySQL에 저장된 데이터와 같은 형태로 공개된다.

AWS에서 제공하는 데이터셋 이용방법
1. 외부 데이터를 이용하는 방법은 스냅샷 ID를 지정하여 EBS 볼륨을 만들면 데이터가 들어간 EBS 볼륨이 만들어진다.
2. 만들어진 EBS 볼륨을 EC2에 연결시키면 엑셀 형식과 CSV형식으로 작성된 데이터에 접근할 수 있다.
3. 지속적인 동기화할 필요가 없으면 수작업으로 레드시프트에 데이터를 불러온다.(레드시프트는 S3에 저장된 CSV 파일을 불러오는 기능을 제공한다.)
4. 이를 PostgreSQL클라이언트와 연결하면 됩니다.

퍼블릭 데이터 셋에 없는 외부 데이터 이용방법
1. 다운로드용 EC2 인스턴스 생성후 FTP 클라이언트 소프트웨어 설치
2. FTP 서버로부터 데이터를 다운로드한다.
3. 다운로드한 파일을 레드시프트에 저장할 수 있는 형식으로 변환한다.
4. 변환된 데이터를 S3에 저장하고 copy명령으로 레드시프트에 저장한다.

태블로로 데이터 분석하기

레드시프트에 대응하면서 프로그래밍 없이 사용할 수 있는 분석 소프트웨어인 태블로 데스크톱을 사용한다. UI화면에서 데이터를 선택하여 클러스터 분석을 하거나, 데이터의 상관 관계 분석할 수 있다. 드래그앤드롭등 직관적인 조작이 많기 때문에 사용법을 익히는데 시간이 많이 걸리지 않는다. 가격도 프로페셔널 에디션 기준 월 70달러정도로 저렴하다.

테블릿 데스크톱은 윈도우 바탕화면에서 작동하므로 윈도우EC2 인스턴스에 소프트 웨어를 설치하고 사무실에서 원격 데스크톱을 연결하여 사용하는 것이 좋다. 사무실 컴퓨터가 아닌 EC2를 이용하는 이유는 응답속도 때문인데 이는 데이터에 자주 액세스를 하기 때문이다.

기존 시스템이 온프레미스에 있는 경우

기존 시스템이 온프레미스에 있는 경우 기본적인 시스템 구성은 크게 다르지 않다. 플라이데이터 싱크로 데이터를 동기화할 수 있다. 리눅스 서버에 플라이 데이터 에이전트를 설치하고 AWS 환경과 마찬가지 요령으로 설치하면 된다.

고려사항
1. 플라이데이터 에이전트를 설치한 서버가 위치하는 네트워크이다. 온 프레미스 환경의 MySQL DB와 AWS 환경의 레드 시프트 모두에 연결할 수 있는 네트워크 구성이여야 한다.

  1. AWS환경에서 VPC 포트를 여는 것이다. 레드시프트에 직접 연결할 수 있어야 한다. 또한 네트워크 및 보안 측면에서 고려한 별도의 설계가 필요하다. 플라이데이터 에이전트 서버와 레드 시프트를 연결하는 네트워크 경로는 안전해야한다.

온프레미스 환경 시스템과의 연계에는 추가 작업이 필요하다는 사실을 명심하자.

profile
devops engineer가 되기 위해

0개의 댓글