Computer Engineering 92

Mac OS Vagrant 설치

Vagrant Vagrant는 여러 프로바이더(Virtual Box, VMware, AWS등)을 이용해 로컬에서 테스트 환경을 쉽게 구성할 수 있도록 도와주는 workflow이다. Vagrant하나로 여러 프로바이더의 환경을 관리 할 수 있다. HashiCorp에 의해서 만들어진 도구이다. 장점은 개발 환경 설정 시간이 적게 들고, 한 번 구축하면 아주 편리하다. 자세한 내용은 아래 참조. www.vagrantup.com/ Vagrant by HashiCorp Vagrant enables users to create and configure lightweight, reproducible, and portable development environments. www.vagrantup.com Mac에 bre..

Computer Storage 종류

요즘 고성능 데이터베이스(Snowflake, BigQuery)들 그리고 RDB(Aurora)들을 보면 컴퓨팅과 스토리지를 분리한 아키텍쳐들이 많이 보인다. 이는 데이터는 공유하면서 컴퓨터 리소스만 따로 늘릴 수 있기 때문에 자원을 효율적으로 쓸 수 있는 아키텍쳐이다. 그리고 Storage간에 sync가 필요하지 않기 때문에 이를 위해 필요한 비용을 아낄 수 있다라는 아주 큰 장정을 가지고 있다. 작은 클러스터에서는 상관없겠지만 클러스터가 10개 이상 이라고 생각하면...... 어마어마한 비용이다. 스토리지를 분리하기 위해서는 NAS, SAN을 사용해야 될 것인데, 성능 문제로 SAN을 사용할 것 이다. 종류 내장 디스크 (Internal Disk) DAS (Direct Attached Storage) N..

MySQL InnoDB History란?

Introduction (시작 전에 이 글은 MySQL 5.6 기준의 글입니다.) 왜 Innodb History에 대해서 알아야 할까요? 1. InnoDB의 MVCC의 동작 원리에 대해 이해하려면 History에 대한 이해가 필요합니다. 2. History List Length가 길어지면 많은 문제들이 발생합니다. (CPU Peak, DML delay) 3. 왜 DBA들이 hung transaction이나 long query를 모니터링하고, Kill 하는지 알 수 있습니다. (커뮤니케이션) MVCC (Multi Version Concurrency Control) 본격적으로 InnoDB History를 살펴보기 앞서 MVCC에 대해서 먼저 간략하게 설명하고 넘어가겠습니다. MVCC를 먼저 설명하는 이유는 ..

Snowflake 소개 및 사용법

Introduction Snowflake는 Datawarehouse solution의 이름이자 회사의 이름입니다. 아직은 한국에서는 사용하는 회사를 본 적이 없지만, 미국에서는 굉장히 많은 회사에서 이용 중인 솔루션입니다. 최근에 IPO 신청하면서 미국 주식에 투자하는 국내 투자자들과 엔지니어들도 관심을 가지고 있지 않을까 하는 생각이 듭니다. 그래서 이번에 회사에서 Datawarehouse solution을 선정하기 위해서 Snowflake를 Research 및 Test한 내용과 개인적으로 Udemy에서 강의를 들으면서 공부한 내용을 이 글에서 소개하려고 합니다. 먼저 간단하게 Snowflake의 핵심 내용 및 Key Summary를 요약해보면, Snowflake의 가장 큰 특징은 위에서 보는 것과 같..

SaaS의 홍수 시대에서 Data Warehouse/Lake 구축은 어떻게 해야 할까?

지금은 바야흐로 SaaS의 시대이다. 출처: https://www.blendr.io/add-native-integrations/ 각 분야 별 대표 서비스 (사실 내가 들어본 각 분야별 서비스) Cloud Infra: AWS, Azure, GCP, Alibaba CRM: Salesforce, Hubspot CRM, ActiveCampaign 등 Marketing: Marketo, Hubspot, Mailchimp 등 CS: Zendesk, Sendbird Desk, Freshdesk HR: BambooHR, Workday Hiring: Lever, Greenhouse Payment: Stripe, PayPal 이런 수많은 SaaS들이 나오면서 여러 SaaS의 구독을 관리하는 서비스가 나오기도 하고, 여러 ..

파이썬은 얼마나 똑똑한가?

Python은 얼마나 똑똑한가? 제목만 보면 먼가 AI와 관련된 글 같지만 사실 이 글은 파이썬의 데이터 모델에 대한 철학에 대한 이야기입니다... (여기까지 속아서 들어왔으니 끝까지 읽어보시는 게 어떠실까요?..) 이 글에서 2개의 class를 정의하고 이를 통해서 파이썬이 얼마나 똑똑한지 증명해보려고 합니다. 아래와 같이 Foo 라는 class가 있고, 이 Foo라는 clsss는 __getitem__() 이라는 메서드 하나만 구현되어 있습니다. class Foo: def __getitem__(self, position): return range(0,30,10)[position] f = Foo() # output이 어떻게 나올거라고 예상하시나요 for i in f: print(i) 아마 결과가 0 10..

AWS Aurora MySQL 정리

최근에 데이터 인프라팀으로 팀을 옮기기도 했고, 그동안 AWS Aurora를 사용하면서 생각보다 MySQL과 다른 부분이 많이 있어서 정리가 필요하다고 생각이 됐습니다. AWS의 공식문서를 정리하면서 저의 생각이나 경험을 약간씩 추가하였습니다. 그리고 마지막에는 MySQL(or AWS RDS MySQL)과 다른 점을 정리해보면서 다시 한번 AWS Aurora를 살펴보려고 합니다. Introduction Amazon Aurora는 MySQL 및 PostreSQL과 호환되는 완전 관리형 관계형 데이터베이스입니다. 아마존에서는 일부 워크로드를 통해서 기존보다 MySQL 같은 경우는 Throughput(처리량)을 5배 PostreSQL은 최대 3배까지 성능을 높일 수 있다고 설명하고 있습니다. (그대로 믿으면 ..

Django Orm Query 최적화하기 1편.

WAS (Web Application Server)의 가장 큰 역할은 DB에서 데이터를 효율적으로 가져와서 Client에게 전달하고, Client에게 받은 데이터를 저장하는 것이라고 생각합니다. 개인적으로 농구에 관심이 많아서 아마추어 선수들도 프로선수들 처럼 자신의 대회기록을 제공하는 사이트를 사이드 프로젝트로 진행하고 있습니다. 아직 개발 중이라서 홍보는 하고 있지 않습니다. 아무래도 기록과 관련된 서비스이다보니 Query를 많이 사용하는 서비스입니다. Team 의 상세페이지를 구현하면서 query 응답속도를 줄인 경험을 공유하려고 합니다. 아직 사용자가 많지 않은 서비스이다 보니 많은 시간을 할애 하지는 않았습니다. 그래서 혹시 부족한 부분이 있고, 조언해주실 부분이 있으면 정말 환영합니다.(사실 ..

파이썬 비정렬 연결 리스트에서 중복 문자열을 제거하는 코드 (with Cracking the coding interview)

안녕하세요. 요즘 Cracking the coding interview 라는 책을 통해서 공부하고 있습니다. 연결 리스트 문제 중에 비정렬 연결 리스트에서 중복 문자열을 제거하는 코드 문제를 파이썬으로 해결해보려고 합니다. + 임시 버퍼를 사용하는 방법과 임시 버퍼를 사용하지 않는 방법 두가지 모두 코드를 작성하여 봤습니다. 일단 값과 다음 노드를 가르키는 객체인 Node 객체를 만듭니다. 복사 가능한 코드 class Node: def __init__(self, value, next_node): self.value = value self.next = next_node 그리고 LinkedList 를 구현합니다. 여기서 설명은 원소를 추가, 삭제 ,조회 등을 구현하는 것은 설명하지 않고 중복 문자열을 제거하..

파이썬 10진수 2진수로 변환하기 (10진수 n 진수로 변환하기)

알고리즘 문제를 풀다보면 10진수에서 2진수로 2진수에서 10진수로 변경을 필요로 하는 문제가 많이 있습니다. 이러한 문제가 나오는 이유는 컴퓨터가 애초에 2진수 체계로 만들어져 있기 때문에 컴퓨터에 대한 이해에 있어서 진법을 이해하는 것이 중요하기 때문이라고 생각합니다. 실제로 컴퓨터에서 곱하기 연산이나 나누기 연산을 한 자리 씩 shift 시키면서 하는 것을 보면 흡사 십진수를 이진수로 변환하는 프로그래밍과 유사하다는 느낌도 받았습니다.(저의 개인적인 생각입니다...!) 십진수를 이진수로 바꾸는 방법은 십진수를 2로 나눈 몫, 나머지 를 이용해서 각 자리를 정해줍니다. 19 이라는 수가 있다면 맨처음 2로 나누면 몫 9이고 나머지는 1 이기 때문에 최하위 bit 1이되고 다시 9를 2로 나누면 몫 4..

반응형