Skip to content

kusitms-28th-kukathon/BE

Repository files navigation

✨ 별빛 기록


당연하다고 느꼈던 일상 속 감사함을 찾아 꾸준히 기록하도록 유도함으로써 삶의 만족감을 증진시키는 공유 감사일기 서비스입니다.

🧑🏻‍💻 파트 별 역할 분담

파트 프레임워크 이름 구현 기능
프론트 ReactNative 최호연 UI개발, API 연동
프론트 ReactNative 박예진 UI개발, API 연동
백엔드 SpringBoot 김희엽 인프라 구축, API 개발, ERD 설계
백엔드 SpringBoot 이승렬 인프라 구축, API 개발, ERD 설계

💻 기술 스택 / 핵심 기술


FrontEnd

  • ReactNatie
    1. 크로스 플랫폼 개발: React Native는 JavaScript와 React를 사용하여 iOS와 Android 모두에서 동작하는 앱을 개발할 수 있습니다. 이것은 코드의 재사용을 높이고 개발 및 유지 보수 비용을 줄이는 데 도움이 됩니다.
    2. 컴포넌트 기반 개발: React Native는 UI를 작성하는 데 컴포넌트 기반 접근 방식을 사용합니다. 이것은 재사용 가능한 컴포넌트를 쉽게 작성하고 조합할 수 있도록 도와줍니다.
    3. Hot Reloading: 앱을 개발 중에 코드를 수정하면 앱을 다시 빌드하거나 새로 고치지 않고도 변경 사항을 즉시 확인할 수 있는 뜨거운 다시로딩 기능을 제공합니다. 이는 개발자 생산성을 높이는 데 도움이 됩니다.
    4. 네이티브 성능과 유사한 성능: React Native는 JavaScript 코드를 네이티브 코드로 변환하여 네이티브 앱과 유사한 성능을 제공합니다. 특히 React Native에서는 네이티브 모듈을 사용하여 필요한 경우 네이티브 코드를 직접 호출할 수 있습니다.
    5. 라이브러리와 생태계: React Native는 다양한 라이브러리와 플러그인이 풍부한 생태계를 가지고 있어, 다양한 기능을 빠르게 추가하고 개발할 수 있습니다.
    6. 커뮤니티와 지원: React Native는 Facebook에서 개발 및 관리되며, 전 세계적으로 큰 개발자 커뮤니티와 지원을 받고 있습니다. 따라서 문제 해결과 도움을 얻기가 쉽습니다.

BackEnd

  • Redis
    1. 빠른 속도와 저렴한 비용: Redis는 모든 데이터를 메모리에 저장하고 처리하기 때문에 빠른 읽기 및 쓰기 작업 속도를 제공합니다. 이로 인해 응답 시간이 빠르며, 데이터베이스 쿼리나 디스크 I/O를 기다릴 필요가 없어서 애플리케이션의 성능을 향상시킵니다.
    2. 인메모리 데이터 저장: Redis는 데이터를 메모리에 저장하기 때문에 빠른 데이터 접근을 가능하게 합니다. 이는 캐싱, 세션 관리, 랭킹 등 빠른 데이터 액세스가 필요한 다양한 용도로 사용됩니다.
    3. 다양한 데이터 구조 지원: Redis는 문자열, 리스트, 세트, 해시, 비트맵 및 공간지리 데이터와 같은 다양한 데이터 유형을 지원합니다. 이는 다양한 애플리케이션에서 데이터 모델링과 조작이 용이하게 만듭니다.
  • SpringBoot
    1. 간편한 설정 및 개발:
      • Spring Boot는 자동 구성(auto-configuration)을 제공하여 개발자가 복잡한 설정을 수동으로 하지 않고도 기본적인 설정을 자동으로 처리합니다. 이로써 개발자는 애플리케이션 로직에 집중할 수 있으며 설정 관련 복잡성을 줄일 수 있습니다.
    2. 내장 서버 지원:
      • Spring Boot는 내장 서버 (예: Tomcat, Jetty, Undertow)를 지원합니다. 이것은 애플리케이션을 배포할 때 외부 서버를 구성하지 않아도 되므로 배포 프로세스를 단순화하고 애플리케이션 실행 및 테스트를 더 쉽게 만듭니다.
    3. 생산성 향상:
      • Spring Boot는 많은 템플릿과 코드 생성 기능을 제공하여 개발 생산성을 높입니다. 예를 들어, Spring Initializr를 사용하면 프로젝트의 기본 구조와 의존성을 빠르게 설정할 수 있습니다. 또한 Spring Boot 스타터(Starter) 패키지를 사용하면 필요한 라이브러리 및 모듈을 간단하게 추가할 수 있습니다.
  • Aws
    1. 확장성: AWS는 필요에 따라 리소스를 확장하거나 축소할 수 있습니다. 트래픽 변동이나 업무 요구 사항의 변화에 대응할 수 있도록 도와줍니다.
    2. 다양한 서비스: AWS는 다양한 클라우드 서비스를 제공하며, 컴퓨팅, 데이터베이스, 스토리지, 네트워킹, 인공지능, 분석, 보안 등 다양한 도구와 서비스를 포함하기도 합니다.
    3. 비용 효율성: AWS는 사용한 만큼 비용을 지불하므로 초기 투자 비용이나 하드웨어 유지 관리 비용을 절감할 수 있습니다. 또한 AWS는 비용 최적화 도구를 제공하여 비용을 최소화할 수 있도록 도와줍니다.
  • MySQL
    1. 오픈 소스 및 라이선스 비용 없음:
      • MySQL은 오픈 소스 소프트웨어로, 라이선스 비용이 없으며 이는 기업과 개발자에게 비용을 절감하고 자유롭게 사용할 수 있는 기회를 제공합니다.
    2. 빠른 속도와 성능:
      • MySQL은 뛰어난 성능을 제공하며, 대부분의 일반적인 데이터베이스 작업을 빠르게 처리할 수 있습니다. 특히 인덱싱, 쿼리 최적화 및 캐싱을 통해 성능을 향상시킬 수 있습니다.
    3. 확장성:
      • MySQL은 수평 및 수직 확장을 지원하므로 데이터베이스 서버의 성능을 쉽게 확장할 수 있습니다. 이는 높은 트래픽 및 데이터 양을 처리해야 하는 대규모 웹 애플리케이션 및 비즈니스 시스템에 적합합니다.
  • Docker
    1. 포터빌리티:
      • Docker 컨테이너는 응용 프로그램과 모든 종속성을 포함하므로 어디에서든 동일한 환경에서 실행할 수 있습니다. 이것은 개발 환경과 프로덕션 환경 간의 일관성을 유지하고, 다른 시스템으로 애플리케이션을 쉽게 이동하고 배포할 수 있도록 도와줍니다.
    2. 경량화:
      • Docker 컨테이너는 가상 머신에 비해 훨씬 가벼우며, 호스트 시스템에서 공유하는 리소스를 최소화합니다. 이로 인해 여러 컨테이너를 동일한 호스트에서 실행할 수 있으며, 시스템 자원을 효율적으로 활용할 수 있습니다.
    3. 빠른 시작:
      • Docker 컨테이너는 빠르게 시작될 수 있으며, 몇 초 내에 실행될 수 있습니다. 이것은 확장성 및 빠른 배포를 지원합니다.

🧩 시스템 아키텍쳐


Untitled

💿 ER Diagram

스크린샷 2023-10-08 오전 3 09 17

Releases

No releases published

Packages

No packages published