[NodeJS] 9장(완) 추가 학습하기

img1.daumcdn.jpg

1. TypeScript란

우선 Node.js에 Typescript를 적용하기 위해 Typescript에 대한 이해가 필요합니다. 타입스크립트의 특징은 다음과 같습니다. Typescript는 JavaScript의 상위 집합으로, 정적 타입을 지원합니다.

  • 코드의 가독성 및 유지보수성 향상
  • 컴파일 타임에 오류 탐지
  • IDE 지원 향상 (자동 완성, 리팩토링 등)

2. Node.js 에서 Typescript 설정하기

먼저 Node.js에서 Typescript를 설정하기 위해서는 Typescript를 설치해야 합니다. 다음 명령어로 typescript를 설치해줍니다.

npm install -g typescript && yarn add typescript 

// 프로젝트 초기화
mkdir typescript-node
cd typescript-node
npm init -y
  • TypeScript 및 필요한 패키지 설치:
npm install typescript ts-node @types/node --save-dev && yarn add -D  typescript ts-node @types/node
  • tsconfig.json 파일 생성
{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  }
}
  • TypeScript 파일 작성 - 프로젝트 디렉토리에 index.ts 파일 생성
const greet = (name: string) => {
  return `Hello ${name}!`;
};

console.log(greet("world"));
  • 실행
npx ts-node index.ts

3. Node.js 에서 GraphQL 설정하기

먼저 Node.js에서 GraphQL을 설정하기 위해 express와 graphql 라이브러리 설치가 필요합니다.

npm install express graphql express-graphql && yarn add express graphql express-graphql
  • GraphQL 스키마 정의:
    • schema.js 파일 생성
const { GraphQLObjectType, GraphQLString, GraphQLSchema } = require("graphql");

const RootQuery = new GraphQLObjectType({
  name: "RootQueryType",
  fields: {
    hello: {
      type: GraphQLString,
      resolve() {
        return "Hello, World!";
      },
    },
  },
});

module.exports = new GraphQLSchema({
  query: RootQuery,
});
  • 서버 설정(sever.js 파일 생성):
const express = require("express");
const { graphqlHTTP } = require("express-graphql");
const schema = require("./schema");

const app = express();

app.use(
  "/graphql",
  graphqlHTTP({
    schema,
    graphiql: true,
  })
);

app.listen(4000, () => {
  console.log(`Server is running on http://localhost:4000/graphql`);
});
  • 실행:
node server.js
  • GraphiQL 인터페이스에서 쿼리 테스트
    • 브라우저에서 http://localhost:4000/graphql 로 이동하여 쿼리 입력

4. 마이크로서비스 아키텍쳐 이해

마이크로서비스 아키텍처는 애플리케이션을 여러 개의 작은 서비스로 나누어 개발하는 방법으로 마이크로서비스 구축의 특징은 다음과 같습니다. 

  • 서비스 분리: 각 서비스는 독립적으로 개발되고 배포됨 예) 사용자 서비스, 상품 서비스, 주문 서비스 등
  • API Gateway 도입: 클라이언트가 여러 서비스를 호출할 수 있도록 API Gateway를 사용해 요청을 라우팅
  • 서비스 간 통신: REST API, GraphQL, gRPC 등을 사용해 서비스 간 데이터를 주고 받음
  • 데이터베이스 관리: 각 서비스는 독립적인 데이터베이스를 가질 수 있음
  • 모니터링 및 로깅: 서비스의 상태를 모니터링하고 로그를 수집하여 문제를 진단

 

GitHub - nodeJsroom/node-js-bloging

Contribute to nodeJsroom/node-js-bloging development by creating an account on GitHub.

github.com

 

LIST