Coder Social home page Coder Social logo

vote-dog's Introduction

📨 vote-dog (Numble)


🐶 강아지 인기투표 API 만들기.

ex_main

⚒️ 요구사항 수립


ex_arch

기본적으로 다음과 같은 기능을 구현한다.

  • 강아지 투표 목록 조회
  • 강아지 투표 목록 상세 조회
  • 강아지 추가
  • 강아지 투표 / 투표 취소

추가로 Kafka를 통한 이벤트처리, Redis를 통한 캐시처리를 구현한다.

🏹 기능 목록


  1. 강아지 목록을 조회하는 API
    • 페이지네이션 구현
    • DB에 강아지의 레코드 PK, 이름, 사진, 간단한 설명과 현재 득표수 정보를 포함
  2. 강아지의 상세 정보 조회 API
    • DB에 강아지의 레코드 PK, 이름, 사진, 간단한 설명과 현재 득표수 정보를 포함
    • Redis에 캐시된 정보가 있을 경우, Redis에서 가져오고, 없다면 DB에서 데이터를 불러와서 Redis에 저장한 뒤 응답
  3. 투표하기 / 투표취소 API
    • 요청에는 강아지의 레코드 PK가 포함되어 백엔드에서 어떤 강아지에 투표 +1 를 해야할지 알도록 구현
    • 요청이 들어오면 Kafka로 이벤트를 Produce 해서 강아지의 PK 값과 투표 또는 투표 취소 구분값을 같이 전송
      • Kafka 환경 세팅 + 작업은 시도했으나, 이슈 해결 실패.
    • HTTP 요청 헤더의 IP를 이용해 중복 투표 방지를 위한 기능 구현
      • IP를 가져오기까지는 했으나 시간 부족으로 구현 실패
  4. 투표 처리
    • Spring에서 Kafka Cousumer를 구현하여 Produce한 이벤트를 전달받음.
      • Kafka 환경 세팅 + 작업은 시도했으나, 이슈 해결 실패.
    • 이벤트 내용을 통해 DB에 강아지 투표 값 업데이트
    • DB에서 업데이트되면 Redis에서도 업데이트 된 강아지의 정보만 새로운 득표 수와 함께 업데이트

📄 API 명세서


ex_api

vote-dog's People

Contributors

ddingmin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.