Giter VIP home page Giter VIP logo

rummagemarket's Introduction

Rummage Market 프로젝트

01. 팀원명단

👨 김영광 : 백엔드 구현 / AOP / AWS S3 / AWS EC2 배포

🧒 서예원 : 백엔드 구현 / Security / Oauth2 / AWS RDS

02. 프로젝트 주제

Untitled (4)

유통업계에서 ‘틈새시장’으로 취급받던 중고거래 시장이 빠르게 성장하고 있습니다. 비주류로 여겨지던 중고상품 거래가 최근에는 ‘실속 쇼핑’, ‘알짜 사업’이라는 인식 전환이 일어나면서 현재 중고시장에 대한 열풍이 일어나고 있습니다.

중고거래에 소셜미디어서비스를 결합하여 딱딱한 중고거래 게시글 대신 각자의 개성이 담긴 프로필 페이지를 가질 수 있고, 중고거래를 원하는 소비자는 본인이 원하는 거래지역을 선별하여 게시글을 필터링 하여 볼 수도 있습니다.

물건을 바라보는 관점에 따라 보물이 되기도 하고 고물이 되기도 합니다. 이러한 시선으로 중고거래 사이트를 보면 숨겨진 보물이 있는 곳으로 볼 수 있습니다. 사람들이 자신만의 보물을 찾길 바라는 마음으로 샅샅이 찾다의 ‘Rummage’라는 단어를 활용하여 RummageMarket을 기획했습니다.

이곳을 클릭하여 더욱 자세한 프로젝트 설명을 보시길 추천합니다.

03. 프로젝트 기간

  • 2022.11.16 ~ 2022.12.06

04. 기술스택

Untitled (3)

05. 포지션별 목표

  • 백엔드

    • Java + SpringBoot 를 사용한 CRUD 구현
    • RESTful한 API를 만들기
    • RDB을 사용한 짜임새 있는 테이블 연관 관계 구현
    • SpringSecurity 인증 / 인가를 통해 접근권한 설정
    • DTO 활용하여 Data를 효율성 있게 전달
    • Front에서의 연산을 최소화
  • 프론트엔드

    • JSP 템플릿엔진 사용을 통한 즉각적인 화면단 확인
    • 템플릿을 활용하여 작성하였지만, Rummage Market의 개성을 표현
    • SpringSecurity + JSTL 을 결합하여 인증/인가된 사용권한 부여

06. 주요기능

  • 회원가입 및 로그인
    • Spring Security 기반 회원가입 및 로그인
    • OAuth 2.0 기반 페이스북 로그인
    • 자동 로그인 기능
  • 메인 페이지
    • 인기 게시글 상위 6개 게시
  • 중고물품 게시판
    • 전체 게시글 조회
    • 거래지역 및 상품명 필터를 기반으로 한 게시글 검색
  • 중고물품 게시글
    • 중고물품 이미지와 정보 게시
    • interest(좋아요) 기능
    • 댓글 조회, 작성 및 삭제 기능
  • 마이 페이지
    • 유저 프로필 조회
    • 유저 프로필 수정
    • 중고물품 거래 게시글 작성(물품이미지, 물품정보)
    • 유저 본인이 작성한 게시글 리스트 조회
    • 이웃 정보 조회 및 이웃 관리
  • 로그아웃
    • 로그아웃

07. 협업방식

🌈Agile Process

적응형 접근 방식최상의 팀워크를 위한 하나의 방법론인 애자일 방법론을 적용하여 프로젝트 기간내 수행을 하였습니다. 불편한 자리가 아닌, 각자의 생각하고 느끼는 바를 여과없이 표현하고 소통하며 상호간의 고충이해하며 협업의 의미를 다시 깨닫게 할 수 있었던 방법이였습니다.

  • 💡Rummage Market 프로젝트는 이러한 Agile Process로 진행되었습니다.

    Check in & out

    • Ground Role 방식을 통한 멤버별 하루 과업량, 출/퇴근시간, 회고 등을 기록하여 상호간의 간접적인 커뮤니케이션을 수행하였습니다.

    • 일일회고를 통해 확인하여 상호간 도움을 줄 수 있는 부분을 캐치할 수 있습니다.

      CheckIn & CheckOut (22.11.17~22.12.06)

    스크럼(Scrum) 개발방법론

    • 목표하는 프로젝트의 기능들을 Position 별로 TodoList화 하여 작업단위 즉, **백로그(Backlog)**를 산정합니다.
    • 작업의 우선순위를 선정하여 해당 백로그별로 예상되는 작업시간 즉, StortPoint를 팀원과 함께 산정을 하되, 팀원간의 생각이 다를시에는, 회의를 통해 재산정 하도록 합니다.
    • 작업의 우선순위가 근본이 되어 팀이 일정량의 작업을 완료하는 시간이 정해진 짧은 기간 즉 Sprint의 기간을 정함과 동시에, Sprint를 분리하도록 합니다.
    • Sprint 가 산정이 되었으면, 담당자를 선정하여 진행하도록 합니다.
    • Sprint가 끝나고 나면, 다음 Sprint의 개선을 위해 진행된 Sprint에 대한 회고를 가집니다.

📂GitHub

개발은 혼자 하는 것이 아닌, 같이 하는 것임을 잘 알고 있습니다.

원활한 협업을 위해, Branch를 이용하여 하나의 프로젝트에서 여러 기능을 나누어 코드 작업을 진행하였습니다.

각자의 Commit 내역을 통해 작업을 관리하여 프로젝트에 안정성을 높혔습니다.

Branch에 Merge 할 시, Pull Request를 활용하여 팀원과의 코드리뷰를 통해 개선점을 도출하고, 더 나은 Clean Code를 같이 만들기 위해 노력하였습니다.

08. 와이어프레임

애자일 방법론을 근거로, 향후 Rummage Market이 Web에서 어떠한 디자인으로 배포가 될 지에 대한, 기초적인 디자인의 틀을 만들어 내기 위해 'Figma’ 라는 Tool을 사용하여 실시간으로 협업하여 손쉽게 디자인을 만들어 낼 수 있었습니다.

또한, 웹 브라우저 혹은 컴퓨터에 직접 (네이티브) 프로그램을 설치하여 사용할 수도 있으므로 빠르게 작업을 진행할 수 있습니다.

20221206_214311

09. ERD

웹 기반으로 설치가 필요 없으며 팀원들과 실시간으로 동시 작업할수 있는 클라우드 서비스를 제공하는 ERD Cloud Tool을 사용하여 팀원과 실시간으로 ERD를 그려나갈 수 있었습니다.

주요기능 + Figma를 통해 조금 더 정교하고 효과적인 ERD를 작성하는데 큰 도움이 되었습니다.

Untitled (5)

10. 포지션 별 참고링크

[Frontend]

[Backend]

[DevOps]

11. 아키텍쳐

Untitled (6)

12. Rummage Market 최종회고

💡김영광

Frontend 작업은 이번이 처음이였습니다.

프론트엔드 skill중에 React, vue 등등 많은 프레임워크가 있긴하였지만 Frontend의 기본인 HTML / CSS 에만 집중하고 싶어서 JSP를 사용하기도 하였는데, 덕분에 JQuery / JavaScript / JSTL 과 같은 기술들을 함께 사용해보는 좋은 경험이 되었습니다.

팀원과의 불화없이 성공적으로 프로젝트를 끝내서 기분이 좋습니다.

매일 작업을 시작하기전, 전날의 작업을 회고하는 시간을 가지면서 상대방에 대한 배려, 협동을 기반으로 프로젝트를 진행하다보니 개인적인 부분에서는 불화가 없어서, 애자일 방법론에 대한 참의미를 깨닫는 소중한 시간이였습니다.

DTO를 이제는 어떻게 활용해야 할지 깨닫는 좋은 공부시간이였습니다.

단순히 DTO는 데이터를 전달한다 혹은, 테이블의 일부 변수만 insert / update 하기위해 그리고 순환참조를 끊어내기 위한 수단이라고만 생각을 하였는데 이번 프로젝트를 통해서 통신의 횟수가 감소할 뿐 아니라 효율적인 로직을 만들수 있는 패턴이라고 직접 경험하게 되었습니다.

AWS에 대한 도전이 성공하여 성취감을 맛보며 직업에 대한 확신을 주는 시간이였습니다.

저에게는 AWS 사용이 사실 꽤나 두려웠던 존재였습니다. 주변에 컴퓨터에 대한 수준이 남들보다 월등히 높고 전공자들만 구축할 수 있는 서비스라고 생각하여 나는 못할거라는 생각이 조금은 들었지만, 천천히 조금씩 수행해 나가니 지금은 프로젝트 구동이 잘 되는 프로젝트가 되었음에 성취감을 맛보고 있었습니다. 물론 개발자라는 직무는, AWS와 같은 서비스를 전문적으로 Controll하는 직무는 아니지만 ‘성취감’ 이라는 달콤한 단어는 제게 열정을 불러일으킬만한 직업의 가치관임을 다시 한 번 깨닫게 되었습니다.

해결한 문제에 대해서 정리를 못한 부분이 아쉬웠습니다.

겪었던 어려움 혹은 문제에 대해서 나중에 똑같은 현상이 재발한다고 가정할 때, 과거의 나는 어떻게 이 문제를 해결하였는가에 대해서 따로 정리하지 않은 부분이 너무 아쉬웠습니다. 정해진 프로젝트 기간내에 빠르게 기능을 완료하려고 하니, 해답을 찾으면 적용하기 바빠 따로 정리 할 생각을 하진 못했습니다. 앞으로 새롭게 배운 내용에 대해 ‘정리’ 라는 습관은 저를 더 발전시키게 하는 원동력이라는 교훈을 깨닫게 되었습니다.

Security 인증/인가를 통한 기능을 확장시키지 못한 아쉬움이 큽니다.

지금 프로젝트의 권한은 일반User 밖에 없습니다. 프로젝트를 기획할 시에, Manager 라는 권한을 통해 User를 탈퇴시키기도 하고, User의 게시글을 삭제할 수 있는 권한을 부여하는 작업이 떠올랐지만, 자연스럽게 우선순위에 밀려나며 목표했던 프로젝트 기간내 수행하지 못했던 점이 아쉬운 경험입니다.

💡서예원

애자일 방식으로 프로젝트를 진행한 것이 좋았습니다.

그전까지 토이 프로젝트를 진행하면서 다른 팀원이 어떤 작업을 하는지에 대해 질문을 해야 알 수 있었고 프로젝트의 진행이 어느 정도 진행되었는지 대략적으로만 파악하는 경우가 많았습니다. 애자일 방식으로 진행해보면서 프로젝트 시작 전에 스크럼을 작성하면서 필요한 작업이 무엇인지 알 수 있었고 프로젝트의 진척도를 가시적으로 볼 수 있어서 좋았습니다. 또 구상했던 기능들을 기간 내에 구현할 수 있어서 좋았습니다.

공부했던 것을 응용할 수 있어서 좋았습니다.

요구사항에 맞게 기능 개발을 하면서 공부했던 것을 응용해보았습니다. 기능 개발을 하기 전 어떤 로직으로 해야될 지 생각을 해보고 차근차근 진행하면서 스프링부트, 시큐리티, JPA, JSP에 대한 이해도가 상승한 것같습니다. 그러다보니 오류가 발생을 했을 때 오류가 난 곳을 찾아 고치는 데 조금 더 수월하게 할 수 있었습니다. 공부하지 않았던 부분은 구글링해서 필요한 것만 적용했는데 이 과정에서 개발실력이 향상되어서 좋았습니다.

추가하고 싶은 기능들이 많아 아쉽습니다.

프로젝트가 거의 끝날 무렵 테스트를 해보면서 추가하고 싶은 기능들이 계속 생겼습니다. 예를 들어서 포스트 혹은 댓글 수정 기능, 회원 관리페이지, 문의 게시판 등이 있습니다. 정해진 프로젝트 기간 내에 수행하지 못할 것 같아서 추후에 하기로 미뤘는데 지금 생각을 해보았을 때 좀 더 욕심을 내는 것이 좋았을까 하는 생각이 듭니다.

rummagemarket's People

Contributors

woodybuzz02 avatar 95glory 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.