본문 바로가기

볼봇의 생활

(58)
[클라우드응용SW개발] 컨테이너 배포와 Azure AI 서비스 도커 이미지를 ACR에 올려 Web App으로 띄우고, 클라우드가 미리 학습해둔 AI로 Q&A 챗봇까지 만들어본 기록 지난 글에서 미니쿠베로 쿠버네티스를 직접 굴려봤다. 그런데 마스터와 워커 노드를 손수 세팅하는 건 실무에선 너무 번거롭다. 클라우드가 좋은 이유는 결국 이 무거운 부분을 대신 들어준다는 데 있다. 이번 주는 그 "대신 들어주는 것"을 두 방향에서 봤다. 하나는 컨테이너를 대신 호스팅해주는 것, 다른 하나는 학습된 AI 모델을 통째로 빌려주는 것. 둘 다 직접 굴려봤다. AKS와 ACR — 쿠버네티스의 무게를 클라우드가쿠버네티스 운영 부담을 클라우드가 떠안은 게 AKS(Azure Kubernetes Service)다. 고가용성·확장성·이식성이 필요한 앱을 배포·관리하기 좋고, 오픈소스 기반..
[클라우드응용SW개발] 도커와 쿠버네티스 한 번에 정리 컨테이너 하나를 직접 빌드해 띄우는 법부터, 그게 수천 개가 됐을 때 쿠버네티스로 굴리는 법까지 "제 자리에선 분명히 잘 됐는데요?" 개발하다 보면 한 번쯤은 하게 되는 변명이다. 원인은 대부분 같다. 개발 환경과 운영 환경이 다르기 때문이다. 내 노트북은 파이썬 3.12인데 서버는 3.1이거나, 패키지 버전이 어긋나거나, 클라이언트엔 있고 서버엔 없는 환경 변수가 있거나. 심지어 서버 한 대 안에서도 앱마다 요구하는 파이썬 버전이 다를 수 있다. 이 환경 복잡성을 정리하려고 나온 게 컨테이너 기술이고, 그 중심에 도커가 있다.도커가 푸는 문제 — 실행에 필요한 걸 통째로 담는다도커는 부두에서 쓰는 물류 컨테이너에서 이름과 개념을 그대로 빌려왔다. 컨테이너 안에 쌀이 들었든 전자제품이 들었든 운송하는 쪽..
[클라우드응용SW개발] 서버리스와 Azure Functions 개념과 호스팅 플랜을 짚고, 스토리지에 올라온 위험 파일을 자동으로 지우는 함수를 처음부터 끝까지 만들어본 기록 서버리스(Serverless)라는 단어를 처음 들었을 때 필자는 진짜로 서버가 한 대도 없는 구조인 줄 알았다. 그런데 이름이 좀 과장됐다. 서버가 사라진 게 아니라, 너무 잘 숨겨져 있어서 쓰는 사람이 서버의 존재나 개수를 신경 쓸 필요가 없어진 것이다. 추상화가 극단까지 올라간 형태라고 보면 된다.예전에는 코드를 짜는 개발자와 서버를 24시간 3교대로 지키는 운영자가 따로 있었다. 그러다 클라우드로 넘어오면서 인프라 관리를 대형 벤더가 떠안았고, 그 결과 개발자가 필요한 코드만 올리면 되는 환경이 됐다. 서버리스는 그 흐름의 끝쪽에 있는 모델이다.동작 원리 세 가지함수 단위 배포 — 프로그..
[클라우드응용SW개발] Azure 와 Streamlit 으로 ToDo 앱 만들기 클라우드에서 웹 서비스를 올리는 방법은 생각보다 여러 가지가 있다. 과거에는 리눅스 서버 하나에 모든걸 직접 올리는 방식이 일반적이었지만, 요즘은 서버 관리에 신경쓰지 않고 코드만 올리면 알아서 돌아가는 PaaS 서비스가 대세이다.이번 포스팅에서는 Azure 가 제공하는 여러 웹 서비스 플랫폼을 정리하고, 그 중 App Service 를 이용해 Streamlit 기반 ToDo 앱을 배포하는 과정을 다뤄본다.Azure 에서 제공하는 웹 서비스 플랫폼Azure 에서 웹 서비스를 구축하는 방법은 크게 네 가지가 있다. 각각 추상화 수준과 사용 목적이 다르므로 프로젝트 성격에 맞게 골라 쓰면 된다.Azure App Service가장 일반적인 완전 관리형 (PaaS) 서비스이다. 개발자는 코드만 작성해서 배포하면..
[클라우드응용SW개발] 관계형 DB부터 Cosmos DB까지 1강. 관계형 데이터베이스의 핵심 개념과 SQL 쿼리테이블 — 데이터가 저장되는 공간관계형 데이터베이스에서 모든 데이터는 테이블(Table)에 저장된다. 테이블은 행(Row)과 열(Column)로 구성되며, 각 행은 하나의 데이터 레코드를 나타낸다.각 열에는 데이터 타입을 지정해야 한다. 예를 들어 CustomerID 같은 숫자 필드는 INT, 이름처럼 문자열 필드는 VARCHAR(50), 전화번호처럼 대시(-)를 포함하는 필드도 VARCHAR(25)로 지정한다. 숫자처럼 보여도 실제 용도에 따라 텍스트 타입을 써야 하는 경우가 있다는 점을 기억하자.정규화(Normalization) — 데이터 중복을 줄이는 핵심 작업고객이 여러 번 주문을 하면, 주문 테이블에 매번 고객 이름과 전화번호를 반복 저장해야 ..
[클라우드응용SW개발] Azure 에서 해보는 클라우드 인프라 데이터에 대한 이해본격적으로 이해하기 전에, 우리가 다루는 데이터의 형태부터 명확히 분류해야 한다. 문제에 대한 솔루션은 데이터의 유형을 잘 이해해야만 한다. 3분류유형특징저장형태예구조화컬럼이 명확히 정의된 고정 스키마테이블RDB, Excel반구조화항목은 유사하나 스키마가 유동적문서JSON비구조화구조자체가 없음객체이미지, 동영상 등 더보기💡 IT 환경은 점점 콘텐츠 중심으로 이동하고 있다. 과거에는 구조화 데이터가 주류였지만, 현재는 이미지·영상·텍스트 등 비구조화 데이터가 폭발적으로 증가하고 있으며, 이를 처리하기 위한 AI·분석 기술이 함께 발전하고 있다. OLTP vs OLAP데이터를 어떻게 처리할 것인가의 관점에서 두 가지 워크로드 패턴을 구분해야 한다.구분OLTPOLAP풀네임Online Tra..
CentOS 8 java 최신 버전 설치 (java-16) CentOS 에서 자바를 설치하려고 시도하면, openjdk 1.8 로 설치된다. 하지만 이 버전은 너무 오래되어 별로 권장하지는 않는다. 따라서 CentOS 에서 최신 버전의 자바를 설치하는 방법에 대해 알아본다. dnf install epel-release 우선 epel 리포지토리를 설치한다. 대부분 서버에 설치되어 있을것이다. dnf list java*jdk-devel 현재 설치 가능한 JDK 들을 살펴본다. 1.8, 11, latest (현 시점에서 16) 이 설치 가능하다. 원하는 버전을 설치하면 된다. 필자는 latest 버전을 설치하기로 했다. dnf install java-latest-openjdk-devel.x86_64 자바 버전을 확인한다. java -version 끝.
Certbot 으로 웹 사이트에 https 적용하기 홈페이지를 만들때, API 서버 하나를 만들때도 https 적용은 이제 필수가 되었다. 최근에는 안드로이드에서 https 적용이 되지 않은 어플리케이션은 API 호출이 안되게 막거나, 상위 노출을 제한하는 등의 패널티를 주기도 한다. 하지만 개인이 수십~수백만원 하는 https 인증서를 단 하나의 토이 프로젝트를 위해 구입하는거는 경제적으로 무리가 있다. 따라서, Let's Encrypt 와 같은 무료 https 인증서 발급 사이트가 있는것이다. Certbot 설치하기 몇몇 블로그들을 참고해보면 epel-release 리포에서 cerbot 을 설치하는 경우가 있는데, 이렇게 하면 잘 안된다. 공식 웹 사이트에서 설명하는대로 설치해야만 편리하게 인증서를 발급&갱신 할 수 있다. Certbot (eff.or..