{"id":25123573,"url":"https://github.com/f-lab-edu/fkream","last_synced_at":"2025-04-23T01:14:19.721Z","repository":{"id":147985631,"uuid":"612047768","full_name":"f-lab-edu/FKREAM","owner":"f-lab-edu","description":"리셀 중고 거래 플랫폼인 KREAM을 모티브로 한 프로젝트","archived":false,"fork":false,"pushed_at":"2024-01-23T08:45:12.000Z","size":1585,"stargazers_count":20,"open_issues_count":3,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T01:14:13.943Z","etag":null,"topics":["java","mybatis","mysql","redis","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/f-lab-edu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-03-10T04:42:25.000Z","updated_at":"2025-04-10T14:12:12.000Z","dependencies_parsed_at":"2024-01-23T10:11:39.746Z","dependency_job_id":"ea3b1ca1-39cd-4657-9574-808326266712","html_url":"https://github.com/f-lab-edu/FKREAM","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-lab-edu%2FFKREAM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-lab-edu%2FFKREAM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-lab-edu%2FFKREAM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-lab-edu%2FFKREAM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/f-lab-edu","download_url":"https://codeload.github.com/f-lab-edu/FKREAM/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250349060,"owners_count":21415914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","mybatis","mysql","redis","springboot"],"created_at":"2025-02-08T07:17:00.646Z","updated_at":"2025-04-23T01:14:19.705Z","avatar_url":"https://github.com/f-lab-edu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FKREAM\n\n**KREAM**을 모티브로 한 리셀 중고 거래 플랫폼 프로젝트입니다. \n\n클라이언트는 Kakao Oven을 활용한 프로토타입을 제작하여, REST API 서버 개발에 중점을 두었습니다.\n\n배치 작업을 수행하는  **fkream-batch** 프로젝트는 [여기](https://github.com/f-lab-edu/fkream-batch)에서 볼 수 있습니다.\n\n### 기술 스택,\nJava 11, Spring Boot 2.7., Gradle, MyBatis, Redis, Docker, MySql, MongoDB, Elasticsearch, Kibana, Kafka, Jenkins, Naver Cloud Platform, Pinpoint, NGrinder\n\n\n## 프로젝트 구조\n\n![image](https://github.com/f-lab-edu/FKREAM/assets/76461625/63e17709-873a-4c69-8b93-fbf8ee575bed)\n\n## 프로젝트 목표\n\n- 객체 지향 원리를 토대로 올바른 코드 작성\n- 대용량 트래픽 처리를 고려하여 서비스 기능 구현\n- 병목 지점 파악\n- 응답속도 성능 개선\n- 새로운 기술을 학습하고 프로젝트 적재적소에 적용\n\n\u003cbr\u003e\n\n## 기술적 이슈 및 고도화\n\n- [매 시간 갱신되는 **실시간 검색 순위 구현**: 엘라스틱서치와 카프카 사용](https://www.notion.so/5bf9a15f8ba9480581e2714928c30bb0?pvs=21)\n- [상품 시세 그래프를 위한 **통계 작업** : 카프카](https://www.notion.so/DB-1-879431763d794401a0e8e3e478c0765e?pvs=21)\n- [엘라스틱 서치를 사용한 **상품 검색 기능 구현**](https://www.notion.so/cbbeb1e958534eb3801b9dca49d53629?pvs=4)\n- [분산 환경에서 **동시성 문제**를 어떻게 해결할까?](https://www.notion.so/7f880ffc975d4fcbbb85fa222caaaf66?pvs=21)\n- [**DB 커넥션 풀 사이즈**에 따른 성능 차이](https://www.notion.so/fdae9e0004c94bdf9798d4070346674e?pvs=21)\n- [자동완성 기능 성능 개선: **Trie 알고리즘**](https://www.notion.so/41280b6f6c324a4c9c00a01e3abdf38c?pvs=21)\n\u003cbr/\u003e\n\n- [가용성과 확장성 관점에서의 **NoSQL과 SQL 비교**](https://www.notion.so/nosql-ed1d754ad641428dac6c9457597ce58c?pvs=21)\n- [분산처리를 위한 **DB Sharding**](https://www.notion.so/143f7cea2bae46259157f80daea0abbd?pvs=21)\n- [고가용성을 위한 **DB replication**](https://www.notion.so/db-replication-181020a542014cfb9330a3e0bee8ab9c?pvs=21)\n- [DB 실행 계획 분석을 통한 **SQL 성능 튜닝**](https://www.notion.so/6272f4b29f4349689d4487e0de9b0ae2?pvs=21)\n\u003cbr/\u003e\n\n- [ngrinder **성능 테스트** : 사용자 행동을 시뮬레이션한 시나리오 성능 테스트](https://www.notion.so/Ngrinder-b459741f58d94adf881dcf24f11ff756?pvs=21)\n- [**글로벌 캐시**: 분산 환경일 때 캐시는 어디에 저장될까?](https://www.notion.so/Cache-69103c0308a44e739b6c546d8ec01e68?pvs=21)\n- [**로드밸런싱**: 분산 환경일 때 트래픽을 어떻게 분산할까?](https://www.notion.so/4faea793a72b4e3da968eae5735722d1?pvs=21)\n- [**세션 스토리지 분리**: 분산 환경일 때 세션은 어디에 저장될까?](https://www.notion.so/64d1059d99054131907e0ddec5e57c4e?pvs=4)\n- [**Scale-Out 적용**: 가용성, 확장성, 성능을 어떻게 개선할까?](https://www.notion.so/Scalability-f3f253c5e2ed41269fa8abf7915d34cd?pvs=21)\n- [**CI/CD** 환경 구성: Jenkins](https://www.notion.so/CI-CD-0ac39bb70aa04e1eb4fc97c429d2bfce?pvs=21)\n\u003cbr/\u003e\n\n- [푸시 알림 메세지 기능: FCM을 사용한 비동기 처리](https://www.notion.so/867e717060f14065b21aa5e9603cad90?pvs=21)\n- [AOP를 이용한 로직 분리](https://www.notion.so/AOP-b0d55411434843168b5c67ef62bfd18a?pvs=21)\n\u003cbr/\u003e\n\n## 주요기능\n\n[위키](https://github.com/f-lab-edu/FKREAM/wiki/%E2%9A%99%EF%B8%8F-%EA%B8%B0%EB%8A%A5-%EC%A0%95%EC%9D%98) 에서 자세히 확인할 수 있습니다.\n\n\u003cbr\u003e\n\n## 공통사항\n\n### 코드 컨벤션\n\n- Google code Style 준수\n\n\u003cbr\u003e\n\n### 브랜치 전략\n\nGitHub Flow를 사용하여 브랜치를 관리합니다.\u003cbr\u003e\nMain 브랜치로부터 새로운 Feature 브랜치를 생성하고 Pull Request에 코드 리뷰를 진행한 후 Jenkins를 통한 테스트 이후 Main 브랜치로 merge 됩니다.\n![img](https://github.com/f-lab-edu/FKREAM/assets/76461625/b6436e5a-b942-4bae-b998-73747cd08841)\n\n\u003cbr\u003e\n\n## 프로토타입\n\n### Home\n\n\u003cimg width=\"1226\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225810968-e84d91f1-9715-464f-a8fe-8ace6e44ef82.png\"\u003e\n\n### 검색\n\n\u003cimg width=\"800\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225811215-842adc4f-e7e3-46aa-8e14-1161e7e75374.png\"\u003e\n\n### SHOP\n\n\u003cimg width=\"320\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225811377-df105c4a-f529-4a82-a6dc-049290253e48.png\"\u003e\n\n### 상세 페이지\n\n\u003cimg width=\"320\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225811594-54c5e439-36c2-4589-b608-314401d39022.png\"\u003e\n\n### 보유 상품 추가\n\n\u003cimg width=\"320\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225835800-b71a1223-ee12-4202-99b2-3ddbc1756354.png\"\u003e\n\n### 구매, 배송, 결제\n\n\u003cimg width=\"824\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225836184-7cda47c8-ffa5-4712-9bf4-22c6106426f7.png\"\u003e\n\n### 판매, 주문, 정산\n\n\u003cimg width=\"824\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225836242-3e613d01-c66a-4f84-839c-c2986d4acd70.png\"\u003e\n\n### MY 페이지\n\n\u003cimg width=\"1200\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225837291-c90e01ae-30f9-4b1a-9f24-db13945d561d.png\"\u003e\n\n### 설정 상세\n\n\u003cimg width=\"1200\" alt=\"image\" src=\"https://user-images.githubusercontent.com/76461625/225837363-d7491ae6-919c-4652-93a7-a90833d6e25a.png\"\u003e\n\n\u003cbr\u003e\n\n## DB Diagram\n\n![FKREAM Diagram (1)](https://user-images.githubusercontent.com/76461625/226078421-db17002e-883c-4776-9283-9a7437a12d55.png)\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff-lab-edu%2Ffkream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff-lab-edu%2Ffkream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff-lab-edu%2Ffkream/lists"}