• Azure Function App 배포하기

    다음은 ML 파이프라인으로 구현된 모델과 모델 추론을 위한 사용자 데이터를 처리하기 위한 API를 Azure Function App으로 배포한 경험을 공유하고자 작성한 글입니다. API 엔드포인트 설계 ML 모델을 서빙할 API를 설계해야 했는데, 요청 종류에 따라 처리 시간이 천차만별이었습니다. 단건 추론은 몇 초면 끝나지만, 사용자 데이터를 배치로 돌리면 수분 이상 걸리거든요. 그래서 엔드포인트를...

  • Nodejs 중첩 스트림을 활용한 I/O

    비순차 병렬 처리를 통한 API 응답 파싱과 데이터 정제를 한꺼번에 하기 위해 다음과 같은 워크플로우를 구성해보았습니다. 복수 개의 API에 요청을 보내야 했고, 응답은 EUC-KR로 인코딩된 XML 형식이었습니다. 이걸 JSON으로 변환하고 정제한 다음 하나의 CSV 파일로 저장하는게 목표였는데, 응답 처리 순서는 따로 보장할 필요가 없었습니다. 각 조건을 어떻게 구현했는지 순서대로 풀어보겠습니다....

  • Tableau 워크북 외부 공유 시 Trusted Auth 설정

    본문 다음과 같은 온프레미스 환경에서 Tableau 워크북을 외부에 임베딩할 때 겪었던 이슈에 관한 이야기를 하려고 합니다. 이슈 임베딩 후 iframe을 호출하니까 로그인 프롬프트가 떡하니 나오더라구요. 계정 정보를 입력하고 로그인을 해도 또 로그인 프롬프트로 리디렉션되는거에요. 결국 iframe 안에서 Tableau 대시보드를 볼 수가 없었습니다. 원인을 찾아보니 Tableau Server가 인증되지 않은 외부 요청을...

  • Tableau 소개 및 라이센스

    Tableau가 뭐에요? 운영 중인 제품이나 사용자 퍼널 데이터 등을 수집해 분석하고 시각화하는 BIBusiness Intelligence 도구 중 하나입니다. 보통 BI 3대장이라고 하면 Tableau, Power BI, Qlik이라고들 하더라구요. 단순히 시각화해주는 도구에서부터 데이터 파이프라인 구축까지도 BI와 함께 꾀할 수 있습니다. 국내에서는 8퍼센트가 기술 블로그를 통해 Tableau를 사용한다고 언급하고 있습니다. 상용 BI를 도입할 정도...

  • 오라클 클라우드 평생 무료 플랜 사용하기

    들어가기 앞서 공짜 좋아하세요? 오라클 클라우드 쓰세요. 두 번 쓰세요. AWS, GCP만 경험해보다 평생 무료플랜 IaaS를 찾아 헤매다 찾은 해답이 오라클 클라우드였습니다. 2021년 7월 기준 평생 무료 플랜을 유지하고 있습니다. 심지어 무료로 서버를 2대나 사용할 수 있습니다. 물론 메모리가 500MB밖에 되지 않아 서버 성능이 많이 떨어지지만 가벼운 프로그램은 거뜬히 돌릴...

  • CentOS 내부망에 PostgreSQL, PostGIS, Apache NiFi 설치하기

    작성 목적 도커 컨테이너조차 쓸 수 없는 환경에서 인터넷 연결조차 되지 않는 환경에서 패키지를 설치하기 위한 삽질을 하고 왔습니다. 추상화된 패키지 매니저(ubuntu의 aptAdvanced Package Tool, CentOS의 yumYellowdog Updater, Modified)가 없어도 오프라인(=내부망, 폐쇄망) 환경에서도 원하는 패키지를 뚝딱 설치할 수 있단걸 알리고 싶어 작성한 글입니다. postgresql, postgis, apache nifi가 어떤 프로그램인지에 대한...

  • TypeORM 데코레이터 씹어먹기

    TL;DR TypeORM 공식문서의 순서에 따라 데코레이터들을 소개합니다. 공식문서와 100% 일치하지 않고 늘릴 부분은 늘리고, 줄일 부분은 줄였음을 확인하신 후에 읽어주세요. SQL, ORM과 OOP에 대한 기본 지식을 가지고 계시는 분이라면 읽기에 더 수월할 수 있습니다! (데코레이터 사용법이 JPA와 아주 유사합니다) 아래 예제 코드들은 TypeORM에 MySQL을 붙여서 사용한 예제입니다. Entity Entity 데이터베이스...

  • TypeORM으로 보는 마이그레이션과 N+1 문제

    마이그레이션 정의 저는 sequelize로 ORMObject Relational Mapping을 입문했습니다. 이들의 폴더구조인 테이블 스키마가 있는 models, 마이그레이션 파일이 있는 migrations, 가짜 데이터가 있는 seeders로 구성되어 있었습니다. migrations는 models와 거의 일치하는 코드인데 함수나 클래스 안에 up, down 메서드가 있는 것 말고는 딱히 차이가 없어 보였습니다. 별 차이가 없음에도 models와 migrations에 같은 코드를 2번이나...

  • Git rebase로 협업 고수되기

    들어가기 앞서 rebase는 크게 두 가지 경우에 사용을 합니다. 같은 브랜치에 여러명이 작업한 경우 Merge branch 커밋이 생긴 경우 해소하기 현재 브랜치에 다른 브랜치에 다른 브랜치 커밋 로그를 붙이고 싶은 경우 아래 나올 케이스들은 다른 테크닉도 사용 가능하겠지만, rebase를 위주로 다루는 글이니 유의하면서 읽어주세요. 두 가지 케이스를 설명하기 전에 대화형...

  • Nodejs 엑셀 자동화 라이브러리 비교하기

    엑셀 자동화? 엑셀 사무 자동화, 엑셀 문서 자동화같은 키워드로 클래스101이나 인프런, 패스트캠퍼스 등에 강의가 종종 올라오고 있습니다. 그 목적은 자주 작업해야하고 실수하기 쉬운 일들을 자동화해 여기에 집중할 떄 필요한 리소스를 다른데 사용하기 위함입니다. 예를 들자면, 구글 스프레드에서 지원하는 API인 GOOGLEFINANCE()를 이용해 실시간 주식가를 긁어와서 포트폴리오를 만드는 정도의 작업은 자체 API만으로...