SlideShare a Scribd company logo
1 of 23
Download to read offline
한 지붕 아래
Project NULL
이진우, 조현호, 최훈존
“한 지붕 아래”는?
학교 기숙사 등 한 지붕 아래에 살고
매일 얼굴을 마주하지만
서로 알지 못하는,
그래도 친해지고 싶은데
선뜻 말걸기는 힘든
청춘들을 위해 기획되었습니다.
사용자 니즈 조사
기숙사 식당에서 혼자 밥먹는 학생들
엘리베이터 옆 게시판에 포스트잇을
붙여 개강파티를 주선하는 사례
포스트잇을 붙여 중고 물품을
거래하는 사례
타지에서 기숙사 생활하는 학생들은 외롭다.
“먼저 말걸기 쉽게” 해주자!
지나가다, 구성원 중 누구나, 별다른 노력 없이
급식메뉴표, 급식제공안내, 공과금명세,
온수단수알림, 난방공급알림, 택배수령자
명단…
식권팝니다, 스터디구해요, 냉장고삽니
다, 개강파티해요, 층간소음주의좀, 봉사
활동같이가요, 연합동아리모집, 책나눔해
요, 관리측에바랍니다…
Wire Frame
“한 지붕 아래”에
단 1개의 통합 게시판
가입절차가 없게
심플한 UI
Human Desgin Project에서 요구한 “배움”을 체크 해볼까
1. MQTT프로토콜을 이용한 Push서비스 경험
2. MongoDB를 Master-Slave로 Replication해보는 경험
3. Apiary를 활용해 테스트와 API Documentation를 습관화
4. HTTPS를 이용한 암호화 통신
5. NginX 경험해보기(요곤 가산점)
거 의 다 했 다!!
(허접하지만...)
추가로 경험한 부분들
1. Token을 활용한 사용자 인증
2. GO언어로 간단하게 Image Server 구축해보기
지금 부터 저희의 경험을 공유하도록 하겠습니다.
3. Unit test(mocha) &REST api test(QUnit + jQuery)
“한 지붕 아래” 아키텍쳐
Client
Web server
Main server
MongoDB Master
MongoDB Slave
RabbitMQ
Image server
Push server
Mosquitto
req
res
write
read
write
subpush
새 글 등록시
pub
MQTT를 이용한 Push
Paho 라이브러리를 이용하여
MQTTService를 구현
“새 글 알림 받기” 버튼 클릭 시
Mosquitto서버에 Subscribe
새 글 등록 시,
새 글에 대한 정보를 서버에서 Publish
Client에서 Push에 대한 Logic 수행
버튼을 클릭하면
MQTTService가 실행되고
Mosquitto서버에 Subscribe된다.
새 글이 게시판에 등록되면
새 글에 대한 제목이 Push로 온다
MongoDB Replication
Main server
MongoDB Master
MongoDB Slave
write
read
write
NginX를 활용한 웹서버 구현
NginX를 활용하면 싱글 쓰레드인 Node를 병렬로
여러 개 띄어놓고 부하를 분산시킬 수 있다!
80 NginX(http)
443 NginX(https)
8080 node
8888 node
NginX를 활용해 포트포워딩!
Apiary를 활용한 Documentation 깔끔한 API 정리
이해 하기 쉬운 간단한 예시와 손쉬운 테스트
Server Client
첫 진입
POST
{UUID : %@#$}UUID를
DB저장,
암호화된
token 발행 RESPONSE
{token : ^$@!}
SharedPreference로
token을 로컬에 저장
HTTP Header
Authorization : token
이후 네트워크 통신 시
HTTP Header에
token을 함께 보냄
HTTP Header에서
token정보를 가져와
사용자 식별
Token을 활용한 사용자 인증
추가로!
Scale out이 가능하도록 서비스를 구성하기 위해서는
Token에 Redis, MongoDB 정보를 넣는다!
JWT모듈을 이용한 사용자 정보 암호화 시,
사용자 정보가 Scale out되어도 몇 번째 DB에 있는지에 대한 정보를
Token에 넣어 빠르게 찾을 수 있도록 설계.
(그렇지 않으면 수많은 DB를 Full scan해야 하는 심각한 문제 발생!)
Unit Test(mocha)
테스트 자동화(QUnit + jQuery)
GO언어를 이용한 Image server
req
res
간단한 게시판 기반의 커뮤니티 구현인줄 알았더니....
게시판 ID에 따른 각각의 닉네임 중복 시 예외 처리
Join이 없는 NoSQL DB를 사용한 게시판 DB설계
익숙하지 않은 Fragment사용에 따른 수 많은 삽질들...
수많은 Null pointer exception, out of memory…
팀 회고 요약
기획에 따라 다양한 기능을 구현해보고자 했으나
부하가 가중되어 이번 학기 때
꼭 경험해야하는 부분만 우선 구현하는 것으로 전략을 수정하였다.
다행히 필수적으로 필요한 “배움”에 대해서는 경험 할 수 있었고,
그 외에 Token이나 GO를 활용한 Image server를 만들어 보는
소기의 성과를 거두었다.
하지만 처음 기획에서 계획했던 다른 기능들을
마저 구현하지 못한 부분은 많이 아쉽고 일정관리 부분에
더 신경을 써야함을 배웠다.
간단한 시연
한 학기 동안 모두들 수고 많으셨습니다~!
넥스트의 조속한 정상화를 바라며...

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Human designproject 최종발표

  • 1. 한 지붕 아래 Project NULL 이진우, 조현호, 최훈존
  • 2. “한 지붕 아래”는? 학교 기숙사 등 한 지붕 아래에 살고 매일 얼굴을 마주하지만 서로 알지 못하는, 그래도 친해지고 싶은데 선뜻 말걸기는 힘든 청춘들을 위해 기획되었습니다.
  • 3. 사용자 니즈 조사 기숙사 식당에서 혼자 밥먹는 학생들 엘리베이터 옆 게시판에 포스트잇을 붙여 개강파티를 주선하는 사례 포스트잇을 붙여 중고 물품을 거래하는 사례 타지에서 기숙사 생활하는 학생들은 외롭다. “먼저 말걸기 쉽게” 해주자!
  • 4. 지나가다, 구성원 중 누구나, 별다른 노력 없이 급식메뉴표, 급식제공안내, 공과금명세, 온수단수알림, 난방공급알림, 택배수령자 명단… 식권팝니다, 스터디구해요, 냉장고삽니 다, 개강파티해요, 층간소음주의좀, 봉사 활동같이가요, 연합동아리모집, 책나눔해 요, 관리측에바랍니다…
  • 5. Wire Frame “한 지붕 아래”에 단 1개의 통합 게시판 가입절차가 없게 심플한 UI
  • 6. Human Desgin Project에서 요구한 “배움”을 체크 해볼까 1. MQTT프로토콜을 이용한 Push서비스 경험 2. MongoDB를 Master-Slave로 Replication해보는 경험 3. Apiary를 활용해 테스트와 API Documentation를 습관화 4. HTTPS를 이용한 암호화 통신 5. NginX 경험해보기(요곤 가산점) 거 의 다 했 다!! (허접하지만...)
  • 7. 추가로 경험한 부분들 1. Token을 활용한 사용자 인증 2. GO언어로 간단하게 Image Server 구축해보기 지금 부터 저희의 경험을 공유하도록 하겠습니다. 3. Unit test(mocha) &REST api test(QUnit + jQuery)
  • 8. “한 지붕 아래” 아키텍쳐 Client Web server Main server MongoDB Master MongoDB Slave RabbitMQ Image server Push server Mosquitto req res write read write subpush 새 글 등록시 pub
  • 9. MQTT를 이용한 Push Paho 라이브러리를 이용하여 MQTTService를 구현 “새 글 알림 받기” 버튼 클릭 시 Mosquitto서버에 Subscribe 새 글 등록 시, 새 글에 대한 정보를 서버에서 Publish Client에서 Push에 대한 Logic 수행
  • 10. 버튼을 클릭하면 MQTTService가 실행되고 Mosquitto서버에 Subscribe된다. 새 글이 게시판에 등록되면 새 글에 대한 제목이 Push로 온다
  • 11. MongoDB Replication Main server MongoDB Master MongoDB Slave write read write
  • 12. NginX를 활용한 웹서버 구현 NginX를 활용하면 싱글 쓰레드인 Node를 병렬로 여러 개 띄어놓고 부하를 분산시킬 수 있다! 80 NginX(http) 443 NginX(https) 8080 node 8888 node NginX를 활용해 포트포워딩!
  • 13. Apiary를 활용한 Documentation 깔끔한 API 정리 이해 하기 쉬운 간단한 예시와 손쉬운 테스트
  • 14. Server Client 첫 진입 POST {UUID : %@#$}UUID를 DB저장, 암호화된 token 발행 RESPONSE {token : ^$@!} SharedPreference로 token을 로컬에 저장 HTTP Header Authorization : token 이후 네트워크 통신 시 HTTP Header에 token을 함께 보냄 HTTP Header에서 token정보를 가져와 사용자 식별 Token을 활용한 사용자 인증
  • 15. 추가로! Scale out이 가능하도록 서비스를 구성하기 위해서는 Token에 Redis, MongoDB 정보를 넣는다! JWT모듈을 이용한 사용자 정보 암호화 시, 사용자 정보가 Scale out되어도 몇 번째 DB에 있는지에 대한 정보를 Token에 넣어 빠르게 찾을 수 있도록 설계. (그렇지 않으면 수많은 DB를 Full scan해야 하는 심각한 문제 발생!)
  • 16.
  • 19. GO언어를 이용한 Image server req res
  • 20. 간단한 게시판 기반의 커뮤니티 구현인줄 알았더니.... 게시판 ID에 따른 각각의 닉네임 중복 시 예외 처리 Join이 없는 NoSQL DB를 사용한 게시판 DB설계 익숙하지 않은 Fragment사용에 따른 수 많은 삽질들... 수많은 Null pointer exception, out of memory…
  • 21. 팀 회고 요약 기획에 따라 다양한 기능을 구현해보고자 했으나 부하가 가중되어 이번 학기 때 꼭 경험해야하는 부분만 우선 구현하는 것으로 전략을 수정하였다. 다행히 필수적으로 필요한 “배움”에 대해서는 경험 할 수 있었고, 그 외에 Token이나 GO를 활용한 Image server를 만들어 보는 소기의 성과를 거두었다. 하지만 처음 기획에서 계획했던 다른 기능들을 마저 구현하지 못한 부분은 많이 아쉽고 일정관리 부분에 더 신경을 써야함을 배웠다.
  • 23. 한 학기 동안 모두들 수고 많으셨습니다~! 넥스트의 조속한 정상화를 바라며...