Skip to content

new-writon/Writon-Web-Server

Repository files navigation

✏ WRITON

💻 기술 스택


분류 개발환경
운영체제 Mac OS
개발도구 VSCode, Postman
프레임워크 Node.js 18.6, Nest.js
데이터베이스 Mysql(8.0.35), Redis (7.1.0)
버전 관리 Github, Git
협업 툴 Slack, Notion
배포 및 운영 AWS, Docker, Github Actions, Nginx, CloudWatch, Clarity

🛠 세부 기술 스택(Tech Stack)

백엔드(Back-end)

  • Node.js 18.6

데이터베이스(Database)

  • Mysql (8.0.35)
  • Redis (7.1.0)

클라우드 서비스(Amazon Web Service)

  • AWS EC2
  • AWS RDS
  • AWS Elastic Load Balancing
  • AWS Cloud Watch
  • AWS Cloud Watch Event
  • AWS Lambda

📌 Code Convention

  • 변수

    1. 변수명은 Camel Case 사용

      const example = 1;
      let example2;
      example2 = 2;
    2. 함수의 경우 동사+명사 사용

      • 예: getInformation()
    3. var 변수 선언은 지양한다.

    4. 약어는 되도록 사용하지 않는다.

      • 부득이하게 약어가 필요하다고 판단되는 경우 팀원과 상의를 거친다.
  • 주석

    1. 한 줄 주석 //은 응용 서비스 함수가 10줄 이내일 경우 매 줄마다 설명을 추가할 때 사용한다.

      // 한줄 주석일 때
      /**
      * 여러줄
      * 주석일 때
      */
    2. 함수 주석 모든 함수에 docs를 붙여 사용한다.

      /**
       * @route Method /Route
       * @desc Function Description
       * @access Public
       */
  • 비동기 함수의 사용

    1. async, await 함수 사용을 지향한다.
    2. Promise 사용은 지양한다.
    3. 다만 로직을 짜는 데 있어 Promise를 불가피하게 사용할 경우, 주석으로 표시하고 commit에 그 이유를 작성한다.
  • 함수명

    1. controller, service 함수명

      • controller와 service 함수명은 동일하다.
        • 조회 함수: bring
        • 수정 함수: modify
        • 삭제 함수: erase
        • 삽입 함수: penetrate
      • 이외 다른 함수는 상황에 맞는 명을 지정 후 함수 docs를 사용하여 명시한다.
      // 조회 함수 가져올 데이터에 대한 타입은 dto타입으로 지정하여 이름에 붙여준다.
      public async bringUser(userId: number): Promise<User> {
      }
      
      // 수정할 객체를 modify 뒤에 붙여준다.
      public async modifyUser(userId: number) {
      }
      
      // 삭제할 객체를 erase 뒤에 붙여준다.
      public async eraseUser(userId: number) {
      }
      
      // 삽입할 객체를 penetrate 뒤에 붙여준다.
      public async penetrateUser(userId: number) {
      }
      
      // 이외 다른 종류의 함수 예시
      public async login(user: User) {
      }
    2. 데이터베이스 접근 함수

      • Repository, Dao 함수
        • 조회, 업데이트, 삭제, 삽입 시
          • 맨 앞에 find, update, delete, insert를 붙인다.
          • 같은 테이블 조건 시 마지막에 By를 붙인다.
          • 다른 테이블의 대한 조건 시 마지막에 With를 붙인다.
  • 클래스명

    1. 해당 클래스명은 맨 앞에 대문자를 사용한다.
    2. (사용하려는 기능명 + 상위 패키지명)을 사용한다.

🔗 ERD(기획성에 따라 변동)


Writon (2)

♻ CI/CD


hangmancicd drawio

⚙️ System Architecture


writon system architecture drawio (7)

📐 트러블 슈팅(Trouble Shooting)


  1. Node.js 동시성 문제
    참고 : https://www.notion.so/Node-js-16b0eb8d61614dfb9bafcbb5eb52317a

💾 응용 프로그램


KakaoTalk_20240630_020448483
  • 초대장 발급을 위한 프로그램
  • 조직의 챌린지에 따라 초대장을 발급할 수 있음.
  • 텍스트, 엑셀 파일을 통해 한 번에 초대장 발급 가능

Code : Repository

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

NPM Version Package License NPM Downloads CircleCI Coverage Discord Backers on Open Collective Sponsors on Open Collective Support us

Description

Nest framework TypeScript starter repository.

Installation

$ npm install

Running the app

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

Stay in touch

License

Nest is MIT licensed.

Releases

No releases published

Packages

No packages published

Languages