Skip to content

Latest commit

ย 

History

History
602 lines (461 loc) ยท 20.5 KB

porting.md

File metadata and controls

602 lines (461 loc) ยท 20.5 KB

ํฌํŒ… ๋งค๋‰ด์–ผ

1. ๊ฐœ์š”

  • ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
    • ๊ฒฐํ˜ผ์„ ๊ฒฐ์‹ฌํ–ˆ์ง€๋งŒ, ๋ง‰์ƒ ์ค€๋น„ํ•˜๋ ค๋‹ˆ ๋ฌด์—‡๋ถ€ํ„ฐ ์ค€๋น„ํ•ด์•ผ ํ•  ์ง€ ๋ง‰๋ง‰ํ•œ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๊ฒฐํ˜ผ ์ค€๋น„๋ฅผ ์‹œ์ž‘ํ•ด๋„ โ€˜ํ•จ๊ป˜ํ•˜๋Š” ๊ฒฐํ˜ผ์ธ๋ฐ ์™œ ๋‚˜ ํ˜ผ์ž๋งŒ ์ค€๋น„ํ•˜๋Š” ๊ฑฐ์•ผ!โ€™๋ผ๊ณ  ๋ถˆ๋งŒ์„ ๋งํ•˜๋ฉฐ, ํ•จ๊ป˜ ๊ณ ๋ฅด๊ณ  ์ค€๋น„ํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ์˜ˆ๋น„ ์‹ ๋ž‘ ๋˜๋Š” ์˜ˆ๋น„ ์‹ ๋ถ€๊ฐ€ ๋งŽ์ด ๋ณด์ž…๋‹ˆ๋‹ค. Blooming์€ ์ด๋Ÿฐ ๋ถ„๋“ค์„ ์œ„ํ•ด ํƒ„์ƒํ•œ ์˜ˆ๋น„ ์‹ ๋ž‘, ์˜ˆ๋น„ ์‹ ๋ถ€์˜ ์†Œํ†ต ์—ฐ๊ฒฐ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Blooming๊ณผ ํ•จ๊ป˜ ๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ฆ๊ฒ๊ณ  ์„ค๋ ˆ๋Š” ๋งˆ์Œ์œผ๋กœ ๊ฒฐํ˜ผ์„ ์ค€๋น„ํ•˜๊ณ  ๋งž์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์‚ฌ์šฉ ๋„๊ตฌ
    • ์ด์Šˆ๊ด€๋ฆฌ : JIRA

    • ํ˜•์ƒ๊ด€๋ฆฌ : Gitlab

    • ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ : Notion, Mattermost Discord

    • ๋””์ž์ธ : Figma

    • UCC : ๋ชจ๋ฐ”๋น„, vllo

  • ๊ฐœ๋ฐœํ™˜๊ฒฝ
    • React : ^18.2.0

    • Vite : ^4.4.5

    • react-router-dom : ^6.14.2

    • recoil : ^0.7.7

    • Flutter : 3.10.6

    • inapp_webview

    • Android Studio :

    • axios : ^1.4.0

    • VS Code : 1.18.1

    • IntelliJ : 11.0.19

    • Springboot : 2.7.13

    • Lombok

    • Spring Data JPA

    • Spring Data Redis(lecttuce)

    • Spring Web

    • Springdoc-openapi-ui 1.6.11

    • Oauth2

    • Swagger 3.0.0

    • SSL

    • CertBot(CA Certificates)

    • Node.js : 18.16.1

    • SERVER : AWS EC2 Ubuntu 20.04.6 LTS

    • DB : MySQL 8.0.34, Redis

  • ์™ธ๋ถ€ ์„œ๋น„์Šค
    • Kakao OAuth2 : application-oauth.yml์— ์„ค์ •

    • AWS S3 : application-local๊ณผ application-prod์— ๋กœ์ปฌ๊ณผ ๋ฐฐํฌ ์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ ์„ค์ •

    • FCM :14.6.4

  • git ignore
    • React-Vite : .env

    • Spring : application-jwt.yml, application-local.yml, application-prod.yml, application-oauth.yml(\src\main\resources์— ์œ„์น˜)

2. ๋นŒ๋“œ

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ˜•ํƒœ
    • .env

      - VITE_KAKAO_API_KEY="์นด์นด์˜ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‚ค"
      
      - VITE_BASE_URL="์š”์ฒญํ•˜๋Š” API ๊ธฐ๋ณธ์ฃผ์†Œ"
      
      - VITE_S3_URL="ํŒŒ์ผ ์—…๋กœ๋“œํ•˜๋Š” AWS ์ฃผ์†Œ"
      
      - VITE_AUTOLOGIN_URL="์ž๋™๋กœ๊ทธ์ธ์‹œ ํ™œ์šฉ๋˜๋Š” URL"
      
      - VITE_LOGIN_URL="์ดˆ๋Œ€์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜๋Š” URL"
      
      - VITE_KAKAO_LOGIN="KAKAO ๋กœ๊ทธ์ธ์‹œ ํ™œ์šฉ๋˜๋Š” ์ฃผ์†Œ"
      
      - VITE_QR_CODE="QRCODE๋ฅผ ํ†ตํ•ด Blooming.apk๋‹ค์šด๋กœ๋“œํ•˜๋Š” ์ฃผ์†Œ"
      
      - VITE_MOBILE_INVITATION_URL="๋งŒ๋“ค์–ด์ง„ ๋ชจ๋ฐ”์ผ ์ฒญ์ฒฉ์žฅ URL"
      
    • application-local.yml

      spring:
        datasource:
          url: <MySQL DB ์ฃผ์†Œ>
          username: <์œ ์ € ์ด๋ฆ„>
          password: <์œ ์ € ๋น„๋ฐ€๋ฒˆํ˜ธ>
          driver-class-name: com.mysql.cj.jdbc.Driver
      
        jpa:
          hibernate:
            ddl-auto: create
          properties:
            hibernate:
              show_sql: true
              format_sql: true
      
      cloud:
        aws:
          s3:
            bucket: <S3 ๋ฒ„ํ‚ท ์ด๋ฆ„>
          credentials:
            access-key: <S3 ๋ฒ„ํ‚ท access-key>
            secret-key: <S3 ๋ฒ„ํ‚ท secret-key>
          region:
            static: ap-northeast-2
            auto: false
          stack:
            auto: false
      
    • application-prod.yml

      spring:
        datasource:
          url: <MySQL DB ์ฃผ์†Œ>
          username: <์œ ์ € ์ด๋ฆ„>
          password: <์œ ์ € ๋น„๋ฐ€๋ฒˆํ˜ธ>
          driver-class-name: com.mysql.cj.jdbc.Driver
      
        jpa:
          hibernate:
            ddl-auto: validate
          properties:
            hibernate:
              show_sql: true
              format_sql: true
        redis:
          lettuce:
            pool:
              max-active: '5'
              max-idle: '5'
              min-idle: '2'
          host: <host ip ์ฃผ์†Œ>
          port: <์‚ฌ์šฉํ•  ํฌํŠธ ๋ฒˆํ˜ธ>
          password: <redis ๋น„๋ฐ€๋ฒˆํ˜ธ>
      
      cloud:
        aws:
          s3:
            bucket: <S3 ๋ฒ„ํ‚ท ์ด๋ฆ„>
          credentials:
            access-key: <S3 ๋ฒ„ํ‚ท access-key>
            secret-key: <S3 ๋ฒ„ํ‚ท secret-key>
          region:
            static: ap-northeast-2
            auto: false
          stack:
            auto: false
      
    • application-oauth.yml

      spring:
        security:
          oauth2:
            client:
              registration:
                kakao:
                  client-id: <Kakao Developers REST APIํ‚ค>
                  client-secret: <Kakao Developers Client Secret ์ฝ”๋“œ>
                  redirect-uri: <Kakao Developers์— ์„ค์ •ํ•œ Redirect url>
                  client-authentication-method: POST
                  authorization-grant-type: authorization_code
                  scope:
                    - profile_nickname
                    - account_email
                    - gender
                    - profile_image
                  client-name: Kakao
              provider:
                kakao:
                  authorization-uri: https://kauth.kakao.com/oauth/authorize
                  token-uri: https://kauth.kakao.com/oauth/token
                  user-info-uri: https://kapi.kakao.com/v2/user/me
                  user-name-attribute: id
      
    • application-jwt.yml

      jwt:
        secretKey: <์„ค์ •ํ•˜๊ณ ์ž ํ•˜๋Š” JWT secretKey>
      
        access:
          expiration: 1800000 # 30๋ถ„
          header: Authorization
      
        refresh:
          expiration: 1209600000 # 2์ฃผ
          header: Authorization_refresh
      
  • ๋นŒ๋“œํ•˜๊ธฐ
    1. Front: React-Vite

      1. npm install

      2. npm run build

    2. Back: Spring

      1. Gradle ์‹คํ–‰
    3. flutter

      1. flutter build apk --release --target-platform=android-arm64
  • ๋ฐฐํฌํ•˜๊ธฐ

    1. Nginx ์„ค์ •

    2. ๋„์ปค

    3. MySQL

      1. ์›ํ•˜๋Š” ์Šคํ‚ค๋งˆ๋ช…์œผ๋กœ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ

      2. DumpSsafy_first.sql ์‹คํ–‰

        -- MySQL dump 10.13  Distrib 8.0.33, for Win64 (x86_64)
        --
        -- Host: 43.200.254.50    Database: ssafy
        
        -- ------------------------------------------------------
        -- Server version    8.0.34
        
        /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
        /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
        /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
        /*!50503 SET NAMES utf8 */;
        /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
        /*!40103 SET TIME_ZONE='+00:00' */;
        /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
        /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
        /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
        /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
        
        --
        -- Table structure for table `couple`
        --
        
        DROP TABLE IF EXISTS `couple`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `couple` (
          `couple_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `updated_at` datetime(6) DEFAULT NULL,
          `couple_code` varchar(8) NOT NULL,
          `wedding_date` date DEFAULT NULL,
          PRIMARY KEY (`couple_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `diary`
        --
        
        DROP TABLE IF EXISTS `diary`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `diary` (
          `diary_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `updated_at` datetime(6) DEFAULT NULL,
          `content` varchar(255) DEFAULT NULL,
          `date` date DEFAULT NULL,
          `image` varchar(255) DEFAULT NULL,
          `title` varchar(255) DEFAULT NULL,
          `user_id` bigint DEFAULT NULL,
          PRIMARY KEY (`diary_id`),
          KEY `FK74rd0bn5raxejw2ukenelbdmt` (`user_id`),
          CONSTRAINT `FK74rd0bn5raxejw2ukenelbdmt` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `hibernate_sequence`
        --
        
        DROP TABLE IF EXISTS `hibernate_sequence`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `hibernate_sequence` (
          `next_val` bigint DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `invitation`
        --
        
        DROP TABLE IF EXISTS `invitation`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `invitation` (
          `invitation_id` bigint NOT NULL,
          `address` varchar(255) DEFAULT NULL,
          `bride_father_name` varchar(255) DEFAULT NULL,
          `bride_father_phone` varchar(255) DEFAULT NULL,
          `bride_mother_name` varchar(255) DEFAULT NULL,
          `bride_mother_phone` varchar(255) DEFAULT NULL,
          `bride_name` varchar(255) DEFAULT NULL,
          `bride_phone` varchar(255) DEFAULT NULL,
          `content` varchar(255) DEFAULT NULL,
          `date` date DEFAULT NULL,
          `floor` varchar(255) DEFAULT NULL,
          `groom_father_name` varchar(255) DEFAULT NULL,
          `groom_father_phone` varchar(255) DEFAULT NULL,
          `groom_mother_name` varchar(255) DEFAULT NULL,
          `groom_mother_phone` varchar(255) DEFAULT NULL,
          `groom_name` varchar(255) DEFAULT NULL,
          `groom_phone` varchar(255) DEFAULT NULL,
          `thumbnail` varchar(255) DEFAULT NULL,
          `time` time DEFAULT NULL,
          `title` varchar(255) DEFAULT NULL,
          `wedding_hall_name` varchar(255) DEFAULT NULL,
          `couple_id` bigint DEFAULT NULL,
          PRIMARY KEY (`invitation_id`),
          KEY `FK9fil2lc64dryhvtawmk5pe6lk` (`couple_id`),
          CONSTRAINT `FK9fil2lc64dryhvtawmk5pe6lk` FOREIGN KEY (`couple_id`) REFERENCES `couple` (`couple_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `liked`
        --
        
        DROP TABLE IF EXISTS `liked`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `liked` (
          `liked_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `review_id` bigint DEFAULT NULL,
          `user_id` bigint DEFAULT NULL,
          PRIMARY KEY (`liked_id`),
          KEY `FKej1jde2ycpdww3eapmgbifv68` (`review_id`),
          KEY `FKcc0jrw2vianbjig6suh66syiw` (`user_id`),
          CONSTRAINT `FKcc0jrw2vianbjig6suh66syiw` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`),
          CONSTRAINT `FKej1jde2ycpdww3eapmgbifv68` FOREIGN KEY (`review_id`) REFERENCES `review` (`review_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `notification`
        --
        
        DROP TABLE IF EXISTS `notification`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `notification` (
          `notification_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `content` varchar(255) DEFAULT NULL,
          `notification_type` varchar(255) DEFAULT NULL,
          `read_status` varchar(255) DEFAULT NULL,
          `title` varchar(255) DEFAULT NULL,
          `user_id` bigint DEFAULT NULL,
          PRIMARY KEY (`notification_id`),
          KEY `FKnk4ftb5am9ubmkv1661h15ds9` (`user_id`),
          CONSTRAINT `FKnk4ftb5am9ubmkv1661h15ds9` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `reservation`
        --
        
        DROP TABLE IF EXISTS `reservation`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `reservation` (
          `reservation_id` bigint NOT NULL,
          `reserved_date` date DEFAULT NULL,
          `reserved_time` time DEFAULT NULL,
          `product_id` bigint DEFAULT NULL,
          `user_id` bigint DEFAULT NULL,
          PRIMARY KEY (`reservation_id`),
          KEY `FKgoouhtuwwm277879njd9atahw` (`product_id`),
          KEY `FKrea93581tgkq61mdl13hehami` (`user_id`),
          CONSTRAINT `FKgoouhtuwwm277879njd9atahw` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`),
          CONSTRAINT `FKrea93581tgkq61mdl13hehami` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `review`
        --
        
        DROP TABLE IF EXISTS `review`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `review` (
          `review_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `updated_at` datetime(6) DEFAULT NULL,
          `content` varchar(255) DEFAULT NULL,
          `image` varchar(255) DEFAULT NULL,
          `like_cnt` int NOT NULL,
          `star` int NOT NULL,
          `product_id` bigint DEFAULT NULL,
          `user_id` bigint DEFAULT NULL,
          PRIMARY KEY (`review_id`),
          KEY `FKiyof1sindb9qiqr9o8npj8klt` (`product_id`),
          KEY `FK6cpw2nlklblpvc7hyt7ko6v3e` (`user_id`),
          CONSTRAINT `FK6cpw2nlklblpvc7hyt7ko6v3e` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`),
          CONSTRAINT `FKiyof1sindb9qiqr9o8npj8klt` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `schedule`
        --
        
        DROP TABLE IF EXISTS `schedule`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `schedule` (
          `schedule_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `content` varchar(255) DEFAULT NULL,
          `reservation_id` bigint DEFAULT NULL,
          `scheduled_date` date DEFAULT NULL,
          `scheduled_time` time DEFAULT NULL,
          `schedule_type` varchar(255) DEFAULT NULL,
          `scheduled_by` varchar(255) DEFAULT NULL,
          `title` varchar(255) DEFAULT NULL,
          `couple_id` bigint DEFAULT NULL,
          PRIMARY KEY (`schedule_id`),
          KEY `FKka3k3mjq8da6a28wjm4d57154` (`couple_id`),
          CONSTRAINT `FKka3k3mjq8da6a28wjm4d57154` FOREIGN KEY (`couple_id`) REFERENCES `couple` (`couple_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `users`
        --
        
        DROP TABLE IF EXISTS `users`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `users` (
          `user_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `updated_at` datetime(6) DEFAULT NULL,
          `email` varchar(255) DEFAULT NULL,
          `fcm_token` varchar(255) DEFAULT NULL,
          `gender` varchar(255) DEFAULT NULL,
          `name` varchar(255) DEFAULT NULL,
          `nickname` varchar(255) DEFAULT NULL,
          `password` varchar(255) DEFAULT NULL,
          `phone_number` varchar(255) DEFAULT NULL,
          `profile_image` varchar(255) DEFAULT NULL,
          `refresh_token` varchar(500) DEFAULT NULL,
          `role` varchar(255) DEFAULT NULL,
          `social_id` varchar(255) DEFAULT NULL,
          `couple_id` bigint DEFAULT NULL,
          `notification_setting` varchar(20) DEFAULT 'agree',
          PRIMARY KEY (`user_id`),
          KEY `FKmr4ayf55g49na319xofm1h7bf` (`couple_id`),
          CONSTRAINT `FKmr4ayf55g49na319xofm1h7bf` FOREIGN KEY (`couple_id`) REFERENCES `couple` (`couple_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        
        --
        -- Table structure for table `wishlist`
        --
        
        DROP TABLE IF EXISTS `wishlist`;
        /*!40101 SET @saved_cs_client     = @@character_set_client */;
        /*!50503 SET character_set_client = utf8mb4 */;
        CREATE TABLE `wishlist` (
          `wishlist_id` bigint NOT NULL,
          `created_at` datetime(6) DEFAULT NULL,
          `product_id` bigint DEFAULT NULL,
          `user_id` bigint DEFAULT NULL,
          PRIMARY KEY (`wishlist_id`),
          KEY `FKqchevbfw5wq0f4uqacns02rp7` (`product_id`),
          KEY `FKtrd6335blsefl2gxpb8lr0gr7` (`user_id`),
          CONSTRAINT `FKqchevbfw5wq0f4uqacns02rp7` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`),
          CONSTRAINT `FKtrd6335blsefl2gxpb8lr0gr7` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        /*!40101 SET character_set_client = @saved_cs_client */;
        /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
        
        /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
        /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
        /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
        /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
        /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
        /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
        /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
        
        -- Dump completed on 2023-08-16 23:29:35
        
    4. Redis

      docker pull redis
       sudo docker run -p 6379:6379 redis
      
  • ์„œ๋น„์Šค ์ด์šฉ ๋ฐฉ๋ฒ•
    • ์นด์นด์˜ค API

    • FCM

    - Firebase ๋น„๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑ

Spring boot์—์„œ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ firebase์— ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” firebase์˜ ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค. firebase ์ฝ˜์†”์—์„œ ์•„๋ž˜ ์ ˆ์ฐจ๋Œ€๋กœ ๋น„๊ณต๊ฐœ ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์•„๋ž˜ ๋งํฌ๋กœ firebase์— ๋“ค์–ด๊ฐ„๋‹ค

    Firebase | Googleโ€™s Mobile and Web App Development Platform

  2. ์‹œ์ž‘ํ•˜๊ธฐ

    Untitled

  3. ํ”„๋กœ์ ํŠธ ์ถ”๊ฐ€๋ฅผ ๋ˆ„๋ฅด๊ณ  ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ž‘์„ฑํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

    Untitled

  4. ์•ฑ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. Blooming์€ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

    Untitled

  5. ์ด์ œ Android ์•ฑ์— Firebase๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

    1. ์•ฑ ๋“ฑ๋ก ์‹œ ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ํ”„๋กœ์ ํŠธ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์ด๋ฆ„์œผ๋กœ ๋งž์ถฐ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด ์™ธ์—๋Š” ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค.

      Untitled

    2. ์•ฑ ๋“ฑ๋ก ํ›„ โ€œgoogle-services.jsonโ€ ๊ตฌ์„ฑ ํŒŒ์ผ์€ ๋‹ค์šดํ•˜์—ฌ app ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋„ฃ์–ด์ค€๋‹ค.

      Untitled

    3. ๊ณต์‹ ์„ค๋ช…์— ๋”ฐ๋ผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

      Untitled

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Android ์•ฑ์— Firebase ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์€ ๋์ด๋‹ค. ์ฝ˜์†”๋กœ ์ด๋™ํ•œ๋‹ค.

    Untitled

  6. Spring boot์— FCM

    1. ํ”„๋กœ์ ํŠธ ์„ค์ •์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค

      Untitled

    2. ์„œ๋น„์Šค ๊ณ„์ • โ†’ JAVA โ†’ ์ƒˆ ๋น„๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑ

      Untitled

      ํŒŒ์ผ์ด ๋‹ค์šด๋œ๋‹ค.

      Untitled

    3. ๋‹ค์šด๋œ ํŒŒ์ผ์„ spring ํ”„๋กœ์ ํŠธ > resources/firebase ํ•˜์œ„ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ๋„ฃ์–ด์ค€๋‹ค.

      Untitled

    4. build.gradleํŒŒ์ผ์˜ dependency์— ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฐ˜์˜ํ•ด์ค€๋‹ค.

      Untitled