서버리스 아키텍처 소셜미디어 개발기 1편

지난편 보기

서버리스 아키텍처 소셜미디어 개발기 0편
_Firebase에 데이타를 저장하고_techstory.shma.so

에 이어 계속 하겠습니다.

User Story 1 번에 관해서 진행하겠습니다.

1. 김개발은 아침 스탠드업 시간에 같이 이야기를 나눌 수 있는 주제를 위해 스탠드업이라는 웹 앱을 찾아간다. 이렇게 함으로써 사람들과 IT에 대한 주제로 커뮤니케이션을 할 수 있다.

1. create-react-app

github에 프로젝트를 만들고 로칼에 디렉토리를 standup 이라는 이름을 만들었으면 이제는 프로젝트 셋팅을 해야겠죠.

react의 boilerplate를 자동으로 만들어 주는 create-react-app을 이용하도록 하겠습니다.create-react-app은 관련된 내용을 서두에 얘기해 두었으니 참조하세요.

링크

create-react-app에 대하여 -1

create-react-app에 대하여 -2

create-react-app에 대하여 -3

facebookincubator/create-react-app
_create-react-app — Create React apps with no build configuration._github.com

create-react-app 설치

$npm install create-react-app -g //글로발 옵션

디렉토리에 create-react-app 설정

create-react-app \[폴더\]

명령어를 사용하면 됩니다. 지금과 같이 standup 폴더를 만든 경우는 아래와 같이 실행하면 됩니다.

$cd standup && create-react-app .

다만 이런 과정에서 미리 만들어 둔 README.md파일을 README.old.md 파일로 만들고 create-react-app의README.md파일을 생성하는 만행을 저지릅니다. 그래서 아래와 같이 응징

$rm README.md && mv README.old.md README.md

이렇게 해도 상관 없는 것은 언제나 create-react-app 프로젝트를 방문하면 새로 업데이트 된 따끈따끈한 README.md 파일을 볼 수 있기 때문입니다.

이쯤에서 저는 git branch를 새로 day1을 만들도록 하겠습니다.

$git branch day1 && git checkout day1 && ls -al

ls -al

와 같은 결과가 나옵니다.

2. 프로젝트 실행

$npm start

를 통해 프로젝트를 실행해 볼 수 있고 아래와 같은 화면을 볼 수 있습니다.
한 단계 산은 넘었군요.

3. gh-pages

User Story 1번을 한번 확인해 보도록 하겠습니다.

김개발은 아침 스탠드업 시간에 같이 이야기를 나눌 수 있는 주제를 위해 스탠드업이라는 웹 앱을 찾아간다. 이렇게 함으로써 사람들과 IT에 대한 주제로 커뮤니케이션을 할 수 있다.

웹 앱을 찾아간다 라는 부분이 있습니다.

찾아가려고 하면 사람들이 외부에서 참조할 수 있는 사이트 링크가 있어야 하겠죠. 다행히 깃헙은 이런 페이지의 웹 호스팅을 지원합니다.

깃헙 페이지

만들어 놓은 깃헙 프로젝트에 gh-pages라는 브랜치를 만들어서 푸쉬를 하면

https://\[사용자명\].gihub.io/\[프로젝트명\]

에 deploy가 됩니다.

제 경우는 https://ehrudxo.github.io/standup 이 되겠죠.

그런데, 이것을 아주 간단하게 해 주는 방법이 있습니다.

Node에는 gh-pages라는 모듈이 존재합니다.(오오오~)

$npm install gh-pages --- save

이렇게 하고 gh-pages 명령어를 통해 바로 실행할 수도 있는데, 자동화를 위해 몇가지 작업을 하겠습니다.

프로젝트 최상위에 존재하는 package.json파일을 열어 봅니다.

{  
"name": "standup",  
"version": "0.1.0",  
"private": true,  
"devDependencies": {  
"react-scripts": "0.6.1"  
},  
"dependencies": {  
"gh-pages": "⁰.11.0",  
"react": "¹⁵.3.2",  
"react-dom": "¹⁵.3.2"  
},  
"scripts": {  
"start": "react-scripts start",  
"build": "react-scripts build",  
"test": "react-scripts test --- env=jsdom",  
"eject": "react-scripts eject"  
}  
}

처럼 들어가 있을 텐데요.

"homepage" : "https://\[사용자명\].gihub.io/\[프로젝트명\]",

를 추가하고 스크립트를 하나 추가하겠습니다.

"deploy": "gh-pages -d build"

homepage를 추가하는 것은 create-react-app에서 빌드를 할 때 경로를 확인하게 하기 위함이고, deploy 스크립트를 추가하는 것은 자동화를 위함입니다.

즉, create-react-app 으로 앱을 production 단계로 빌드해서 gh-pages 를 통해서 디플로이 하는Continuous Integration용 명령어를 추가한 것입니다.

우와~

최종 package.json 파일은 아래와 같은 형태를 취하게 됩니다.

{  
"name": "standup",  
"version": "0.1.0",  
"private": true,  
**"homepage" : "**[**https://ehrudxo.github.io/standup**][anchor7]**//변경하시고. 주석은 삭제하세요.",**  
"devDependencies": {  
"react-scripts": "0.6.1"  
},  
"dependencies": {  
"gh-pages": "⁰.11.0",  
"react": "¹⁵.3.2",  
"react-dom": "¹⁵.3.2"  
},  
"scripts": {  
"start": "react-scripts start",  
"build": "react-scripts build",  
"test": "react-scripts test --- env=jsdom",  
"eject": "react-scripts eject",  
**"deploy": "gh-pages -d build"**  
}  
}

4. 페이지 변경

소스 변경 없이 올리면 너무 썰렁할 테니 대문을 조금 바꾸도록 하겠습니다.

public 폴더 아래의 index.html의 title을 아래와 같이 바꿔주시고

<!doctype html\>  
<html lang="en"\>  
<head\>  
<meta charset="utf-8"\>  
<meta name="viewport" content="width=device-width, initial-scale=1"\>  
<link rel="shortcut icon" href="%PUBLIC\_URL%/favicon.ico"\>  
<title\>Stand Up!</title\>  
</head\>  
<body\>  
<div id="root"\></div\>  
</body\>  
</html\>

src 폴더 아래의 App.js파일은 다음과 같이 바꿔 줍시다.

import React, { Component } from 'react';  
import logo from './logo.svg';  
import './App.css';

class App extends Component {  
render() {  
return (  
<div className="App"\>  
<div className="App-header"\>  
<img src={logo} className="App-logo" alt="logo" /\>  
<h2\>Stand Up 앱을 만들어 봅시다</h2\>  
</div\>  
<p className="App-intro"\>  
이제 여기서 부터 프로젝트는 시작입니다. 로고는 일단은 그냥 둡시다.  
</p\>  
</div\>  
);  
}  
}

export default App;

5. 빌드

이제 다음 명령어를 치면 production 레벨의 빌드단계를 거치게 됩니다.

$npm run build

아마 build 폴더를 만들면서 아래와 같은 화면을 보여줄 것입니다.

build 폴더 아래에는 static 한 파일들과 함께 배포용 파일들이 셋팅되어 있습니다.

6. 배포

아까 만들었던 스크립트를 활용해서

$npm run deploy

명령어를 입력하면 그림과 같이 내가 만든 페이지가 깃헙 호스팅 페이지에 배포 되었습니다!

놀랍죠.

다음 번엔 User Story2 번을 3번에 나눠서 만들어 보도록 하겠습니다.

By Keen Dev on October 20, 2016.

Exported from Medium on May 31, 2017.

서버리스 아키텍처 소셜미디어 개발기 0편

  1. Firebase에 데이타를 저장하고
  2. 소셜 미디어용 카드는 Embed.ly 를 이용해서 만들어
  3. github-page에 자동으로 배포하는

100% 서버리스 아키텍쳐의 소셜 미디어를 만들어 보도록 하겠습니다.

프레임워크는 react를 써 볼까 하고 있습니다.

해당 내용은 진행하면서

ehrudxo/standup
_standup project for newbi_github.com

깃헙 프로젝트에 1,2,3,4,5,6,7 편을 branch를 만들면서 진행하도록 하겠습니다. 각각의 소스는 각 branch에서 확인하세요.

최대한 자세한 내용을 적도록 할테니 따라만 오시면 소셜미디어 앱을 만들 수 있도록 하겠습니다.

앱 이름 : 스탠드업!

stand up meeting

1. 개요

제가 일하고 있는 팀은 애자일 개발방법론을 사용하고 있습니다. 지금은 너무나도 많은 회사, 그 안에서도 많은 팀에서 애자일 개발 방법론을 가지고 개발을 하고 있죠?

여러가지 애자일 개발 방법론 중에서도 단연코 가장 많이 사용되는 방법론은 스크럼 혹은 스탠드업입니다. 스크럼이라고 하면 굉장히 넓은 의미의 이터레이션까지 포함하시는 경우가 있으니 스탠드 업에만 국한해서 얘기를 하겠습니다.

The stand-up has particular value in Agile software development processes, such as Scrum or Kanban, but can be utilized in context of any software-development methodology.

출처 : stand-up meeting(미디어 위키)

꼭 애자일이 아니더라도 소프트웨어 개발을 위해서는 종종 사용되는 방법이라고 하고 타임박싱은 5분에서 15분 정도를 합니다.

나머지는 조금씩 다를 수 있겠지만, 10여명이 넘는 팀 전체 스탠드업에는 각 나눠진 작은 팀의 주제보다는 팀 전체를 위한 이슈를 이야기 하는데요. 머리를 말랑말랑하기 위해 간단한 IT 이야기를 할 수 있는 앱을 만들어 볼까 합니다.

꼭 서서 할 필요는 없지만 앉아 있으면 끝나지 않는 회의가 많다!

기왕이면 아침에 스마트폰으로 볼 수 있도록 모바일을 먼저 고려하는 것도 당연히 들어가야 합니다.

2. 설계

  • 페르소나
    이름 : 김개발

으.. CSS…

애자일 개발자 김개발 씨는 IT 트렌드에 무척이나 민감하다. 아침 스탠드 업 시간에 일간 보고만 하는 것이 매우 못마땅한데 기술적인 이야기를 같이 하면 좋겠다.

  • User Story

    1. 김개발은 아침 스탠드업 시간에 같이 이야기를 나눌 수 있는 주제를 위해 스탠드업이라는 웹 앱을 찾아간다. 이렇게 함으로써 사람들과 IT에 대한 주제로 커뮤니케이션을 할 수 있다.

2. 김개발이 사이트를 방문해서 자신이 어제 유심하게 읽은 글을 올릴 수 있다. 이렇게 하면 다른 사람들이 볼 수 있다.
* 에디터 창은 하나만 있고 거기서 글을 작성하고 업로드 하면 글이 외부 클라우드 공간에 저장이 된다.

3. 김개발이 작성한 글이 목록으로 보여진다. 이렇게 함으로써 다른 사람들이 목록을 확인할 수 있다.
* 목록글은 해당IT 주제의 대표 이미지와 제목, 간단 요약등이 들어 있는 카드의 리스트 형태로 나열이 되어야 한다.

유저스토리는 개발 과정 중에 변경이 일어날 것인데, 그런 과정도 중간 중간 보 언급하면서 넘어가겠습니다.

3. 개발전 준비

  • 깃헙에 프로젝트 만들기

위와 같이 프로젝트를 만들어 줍니다. 물론 fork를 따는 방법도 있겠지만(그래주시면 일단은 감사! star도 한번 눌러주시면 더 감사!) 따라가는 입장에서는 만들어 보는 방법도 좋은 시도 입니다.

만들고 나면 아래와 같이 설정창이 뜨게 됩니다.

  • README.md파일 만들기

Readme 파일은 Art-of-readme 라는 내용을 참고하시면 더 좋을 거 같습니다.

art-of-readme
_깃헙에서 프로젝트를 사용할 때 리드미파일의 영향도는 얼마나 된다고 보시나요? 저의 경우는 Readme파일의 완성도를 보고 프로젝트의 완성도를 가늠하는데 아주 높은 확률로 Readme 와 프로젝트의 완성도는 비슷했…_techstory.shma.so

의 형태와 같이 README.md 파일을 만들고 깃에 푸쉬하고 준비과정은 마무리 하도록 하겠습니다.

By Keen Dev on October 18, 2016.

Exported from Medium on May 31, 2017.