반응형

1. Azure란 무엇인가?

Azure는 Microsoft가 제공하는 클라우드 컴퓨팅 플랫폼으로, 다음과 같은 클라우드 서비스를 제공합니다:

  • IaaS (Infrastructure as a Service): 가상 서버, 네트워크, 스토리지 등 인프라 제공.
  • PaaS (Platform as a Service): 애플리케이션 개발 및 배포를 위한 플랫폼 제공.
  • SaaS (Software as a Service): 클라우드 기반 소프트웨어 제공.

주요 특징:

  1. 다양한 언어와 도구 지원 (Node.js, Python, Java, .NET 등).
  2. 60개 이상의 리전 지원으로 글로벌 확장 용이.
  3. Azure Active Directory와 같은 강력한 인증 및 보안 서비스.

2. Azure의 주요 서비스

2.1 컴퓨팅 서비스

  • Azure Virtual Machines (VM): 가상 서버를 생성하고 관리.
  • Azure Kubernetes Service (AKS): 컨테이너 기반 애플리케이션 관리.
  • Azure App Service: 웹 애플리케이션, 모바일 백엔드, API를 호스팅.

2.2 데이터베이스 서비스

  • Azure SQL Database: 관리형 SQL 데이터베이스.
  • Cosmos DB: 글로벌 분산형 NoSQL 데이터베이스.
  • Azure Database for PostgreSQL/MySQL: 오픈 소스 데이터베이스 지원.

2.3 스토리지 서비스

  • Blob Storage: 대규모 비정형 데이터 저장.
  • File Storage: SMB 프로토콜 기반 파일 공유.
  • Disk Storage: VM용 고성능 디스크 저장소.

2.4 네트워킹

  • Azure Load Balancer: 트래픽 부하 분산.
  • Azure VPN Gateway: 안전한 네트워크 연결.
  • Azure CDN: 전 세계 콘텐츠 배포 가속화.

2.5 AI 및 머신러닝

  • Azure Cognitive Services: 음성 인식, 번역, 이미지 분석 등 AI API 제공.
  • Azure Machine Learning: ML 모델 학습, 배포, 관리.

3. Azure 사용 사례

3.1 웹 애플리케이션 배포

Azure App Service를 사용하면 Node.js, Python, .NET 등으로 작성한 애플리케이션을 손쉽게 배포할 수 있습니다.

# Node.js 애플리케이션 배포 예제
az webapp up --name my-web-app --runtime "NODE|16-lts"

3.2 데이터 분석

Azure Synapse Analytics를 사용하여 대규모 데이터를 분석하고, Power BI와 연동해 시각화 가능.

3.3 하이브리드 클라우드

Azure Arc를 통해 온프레미스 및 멀티클라우드 환경을 통합 관리.

4. Azure 시작하기

4.1 Azure 무료 계정 생성

Azure는 무료로 시작할 수 있는 계정을 제공합니다.

  • 제공 혜택:
    • $200 크레딧 (30일 유효).
    • 12개월간 무료 인기 서비스 제공 (예: VM, Blob Storage).
    • 항상 무료 서비스(예: Cosmos DB 400 RU/s, App Service 10개 호스팅).

무료 계정 생성 링크: Azure 무료 계정 생성

 

Azure 무료 계정 또는 종량제 만들기 | Microsoft Azure

Azure 계정을 만들어 애플리케이션을 만들고, 배포하고, 관리하기 위한 확장성 있고 비용 효율적인 서비스를 시작합니다.

azure.microsoft.com

Azure CLI는 Azure 리소스를 명령줄에서 관리할 수 있는 도구입니다.

  1. Azure CLI 설치:

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

2. Azure 로그인:

az login

 

4.3 Azure Virtual Machine 생성

  1. VM 생성 명령:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image UbuntuLTS \
    --admin-username azureuser \
    --generate-ssh-keys

2. VM 접속:

ssh azureuser@<public-ip-address>

 

5. Azure vs AWS

특징AzureAWS

사용 편의성 Microsoft 환경(.NET, Windows)에 강점 Linux 환경과 오픈 소스 지원 강점
지역 커버리지 60+ 리전 30+ 리전
하이브리드 클라우드 Azure Arc 강점 Outposts 강점
가격 경쟁력 서비스 간 변동 있음 유사한 수준이나 일부 서비스 더 저렴

6. 결론

Azure는 확장성, 다양성, 유연성을 갖춘 클라우드 플랫폼으로, 초보자부터 전문가까지 폭넓게 사용할 수 있는 서비스를 제공합니다. 특히 Windows 환경이나 하이브리드 클라우드를 활용하는 기업에 적합합니다. 앞으로 Azure를 활용한 웹 애플리케이션 배포, 데이터 분석, AI/ML 모델 생성 방법 등을 다룰 예정이니 기대해주세요!


이 글은 Azure의 기본 개념과 시작 방법을 다루었으며, 다음 글에서는 Azure App Service를 활용한 웹 애플리케이션 배포에 대해 자세히 설명하겠습니다. 도움이 되었다면 댓글로 의견을 남겨주세요! 😊

반응형
반응형

이 글에서는 이전에 작성한 Node.js와 Express로 간단한 RESTful APIMongoDB를 연동하여 데이터를 영구적으로 저장하고 관리하는 방법을 소개합니다. Mongoose 라이브러리를 활용하여 MongoDB와의 통신을 더 쉽게 처리하는 방법을 보여드리겠습니다.

1. MongoDB와 Mongoose 설치

1.1 MongoDB 설치

  1. 로컬 MongoDB 설치:
    • 운영 체제에 맞는 MongoDB를 설치합니다.
    • MongoDB 다운로드 페이지에서 설치 가능.
    • 설치 후 MongoDB 서버를 실행:
      bash
       
      mongod --dbpath /path/to/your/data
  2. Atlas를 사용한 클라우드 MongoDB:

1.2 Mongoose 설치

  1. 프로젝트 디렉터리로 이동하여 Mongoose 설치:
    bash
     
    npm install mongoose

2. MongoDB 연결 설정

2.1 MongoDB와 연결

server.js에서 Mongoose를 사용하여 MongoDB에 연결합니다.

javascript
 
const mongoose = require('mongoose');

// MongoDB URI
const mongoURI = 'mongodb://localhost:27017/restapi_demo'; // 로컬 MongoDB
// const mongoURI = 'your-mongo-atlas-uri'; // Atlas URI

// MongoDB 연결
mongoose
  .connect(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log('MongoDB 연결 성공!'))
  .catch((err) => console.error('MongoDB 연결 실패:', err));

3. MongoDB 데이터 모델링

3.1 Mongoose 스키마와 모델 생성

MongoDB의 데이터를 관리하기 위해 Mongoose 스키마와 모델을 정의합니다. models/User.js 파일을 생성하고 아래와 같이 작성합니다.

javascript
 
const mongoose = require('mongoose');

// 사용자 스키마 정의
const UserSchema = new mongoose.Schema({
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  age: { type: Number },
  createdAt: { type: Date, default: Date.now },
});

// 모델 생성
const User = mongoose.model('User', UserSchema);

module.exports = User;

4. API 엔드포인트 수정

4.1 사용자 CRUD 기능 구현

server.js 파일에서 MongoDB와 연동하여 CRUD(Create, Read, Update, Delete) 기능을 구현합니다.

1) 사용자 생성 (POST 요청)

javascript
 

const User = require('./models/User');

app.post('/users', async (req, res) => {
  try {
    const newUser = new User(req.body); // 요청 데이터로 사용자 생성
    const savedUser = await newUser.save(); // MongoDB에 저장
    res.status(201).json(savedUser);
  } catch (err) {
    res.status(400).json({ error: err.message });
  }
});


2) 사용자 조회 (GET 요청)

javascript
 
// 모든 사용자 조회
app.get('/users', async (req, res) => {
  try {
    const users = await User.find(); // 모든 사용자 검색
    res.json(users);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

// 특정 사용자 조회
app.get('/users/:id', async (req, res) => {
  try {
    const user = await User.findById(req.params.id);
    if (!user) return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' });
    res.json(user);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

3) 사용자 업데이트 (PUT 요청)

javascript
 
app.put('/users/:id', async (req, res) => {
  try {
    const updatedUser = await User.findByIdAndUpdate(req.params.id, req.body, {
      new: true,
    });
    if (!updatedUser) return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' });
    res.json(updatedUser);
  } catch (err) {
    res.status(400).json({ error: err.message });
  }
});

4) 사용자 삭제 (DELETE 요청)

javascript
 
app.delete('/users/:id', async (req, res) => {
  try {
    const deletedUser = await User.findByIdAndDelete(req.params.id);
    if (!deletedUser) return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' });
    res.json({ message: '사용자가 삭제되었습니다.' });
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

5. 실행 및 테스트

5.1 서버 실행

bash
 
node server.js

5.2 Postman 또는 브라우저로 테스트

  • POST 요청: 사용자 생성.
  • GET 요청: 사용자 조회.
  • PUT 요청: 사용자 정보 업데이트.
  • DELETE 요청: 사용자 삭제.

6. 결론

MongoDB를 연동하여 Express API를 확장하면 데이터를 영구적으로 저장할 수 있습니다. 이를 통해 간단한 RESTful API가 더욱 강력해지고 실제 애플리케이션 환경에서 활용 가능해집니다. 다음 글에서는 **JWT(JSON Web Token)**를 사용하여 인증 기능을 추가하는 방법을 다뤄보겠습니다.

이 글이 유용했다면 댓글로 의견을 남겨주세요!

반응형

+ Recent posts