SlideShare a Scribd company logo
프로그래머스프론트엔드아키텍처변천사
:좋은개발경험을찾아서
Speaker
김은수(EunsuKim)
(현)Grepp(프로그래머스)FrontendDeveloper
(전)Mathpresso(콴다)FrontendDeveloper
프로그래머스
개발자성장주기에맞는교육,평가,채용서비스를제공하고있습니다
프로그래머스기술스택(~2021)
RubyonRails
Vue(byWebpacker)
프로그래머스프론트엔드아키텍처(~2021)
프론트엔드개발자가겪는문제들
Vue코드만수정했는데배포하는데너무오래걸려요
서로다른팀이하나의package.json을공유해서의존성관리가힘들어요
RailsWebpacker에강한의존성이생겼어요
결론적으로,개발경험이안좋아요😭
프론트엔드개발자가원하는것
🚀 빠르게개발하고배포하는것
🪄 의존성관리도팀별로알아서척척
⚛️ Vue말고React도쓰고싶다!
그래서우리는프론트엔드아키텍처를개선하기로했습니다
New프론트엔드아키텍처설계
✅ Do
프론트엔드를Rails애플리케이션과독립적으로개발/빌드/배포가능
프론트엔드코드베이스는모노레포로관리
전사공통패키지외에는팀에서자유롭게의존성도입
기존아키텍처와새로운아키텍처가공존하고,점진적(Progressive)으로마이그레이션가능
❌ Don’t
아키텍처를바꾸느라제품개발프로세스가멈추면안됨
선행조사
Airbnb사례-Hypernova
오늘의집사레-오늘의집MSAPhase1.프론트엔드분리작업
프로그래머스가처한상황과비슷한사례가있을까?
Airbnb사례:Hypernova
Aserviceforserver-siderenderingyourJavaScriptviews
Server MyComponent.js
var hypernova = require('hypernova/server');
hypernova({
devMode: true,
getComponent(name) {
if (name === 'MyComponent.js') {
return require('./app/assets/javascripts/MyComponent.
}
return null;
},
port: 3030,
});
const React = require('react');
const renderReact = require('hypernova-react').renderR
function MyComponent(props) {
return <div>Hello, {props.name}!</div>;
}
module.exports = renderReact('MyComponent.js', MyCompo
Airbnb사례:Hypernova
1. 클라이언트코드가서버코드로부터분리될수있음
2. 점진적으로적용가능함
실제로구현된사례를확인함으로써아키텍처설계에대한힌트를얻게되었다!
New프로그래머스프론트엔드아키텍처-CoreConcept
프론트엔드코드를저장할모노레포지토리
프론트엔드애플리케이션manifest를Rails템플릿에임베딩
WebpackManifest
Vue/React/AnythinginRails
WebpackManifest
1. 개발자가작성한소스코드
2. 작성한소스코드가의존하는라이브러리및벤더(vendor)코드
3. Webpackruntime및manifest
Manifest
Asthecompilerenters,resolves,andmapsoutyourapplication,itkeepsdetailednotesonallyourmodules.Thiscollectionofdata
iscalledthe"Manifest,"andit’swhattheruntimewillusetoresolveandloadmodulesoncethey’vebeenbundledandshippedto
thebrowser.
Webpack으로빌드된애플리케이션이포함하는코드
WebpackManifestPlugin
Webpackmanifest를추출할수있게해주는플러그인
// webpack.config.ts
import { WebpackManifestPlugin } from 'webpack-manifest-plugin';
const productionConfig: Configuration = {
mode: 'production',
output: { filename: '[contenthash].js' },
module: { ... },
plugins: [
new WebpackManifestPlugin(),
],
};
// dist/manifest.json
{
"main.js": "/b815c1d65ebb736ed574.js",
"175.css": "/175.67ac9023a9a76244ce98.css",
"175.css.map": "/175.67ac9023a9a76244ce98.css.map",
"js": "/02067bc9c4a3d115e4c4.js",
"js.map": "/02067bc9c4a3d115e4c4.js.map",
"index.html": "/index.html",
}
기존프로그래머스프론트엔드아키텍처
개선된프로그래머스프론트엔드아키텍처
개선된아키텍처의장점-(1)Scalability
기존Rails코드베이스의수정없이새로운웹애플리케이션개발및배포가가능
개선된아키텍처의장점-(2)Independency
애플리케이션의의존성을독립적으로관리가가능
그렇게프로그래머스프론트엔드개발자들은행복하게잘살았습니다
그렇게프로그래머스프론트엔드개발자들은행복하게잘살았습니다
…가또불편한점이생겼습니다
개선된아키텍처의불편한점
각애플리케이션에서의존하는코드가새로릴리즈되면해당사항을반영하기위해모든앱을다시배포해야함
개선된아키텍처의불편한점
각애플리케이션에서의존하는코드가새로릴리즈되면해당사항을반영하기위해모든앱을다시배포해야함
앱을다시배포하지않고의존하는코드의변경사항을런타임에바로적용할수없을까?
앱을다시배포하지않고의존하는코드의변경사항을런타임에바로적용할수없을까?
Webpack5ModuleFederation
Webpack5ModuleFederation-CoreConcept
빌드된애플리케이션=컨테이너
호스트(Host)컨테이너:외부에노출된모듈을불러와사용
리모트(Remote)컨테이너:모듈을외부로노출(expose)
Webpack5버전부터포함된ContainerPlugin을사용하여적용가능
ContainerPlugin을추상화한ModuleFederationPlugin을사용하면더쉽게적용가능
ModuleFederationPlugin
Host컨테이너의webpackconfig Remote컨테이너의webpackconfig
import { container } from 'webpack';
const config: Configuration = {
// ...생략
plugins: [
new container.ModuleFederationPlugin({
remotes: {
remoteApp:
`remoteApp@${process.env.APP_URL}/remoteEntry.js`
},
}),
],
}
import { container } from 'webpack';
const config: Configuration = {
// ... 생략
plugins: [
new container.ModuleFederationPlugin({
name: 'remoteApp',
filename: 'remoteEntry.js',
exposes: {
'./Header': './src/components/Header.tsx',
},
}),
],
};
ModuleFederation사용예시
import { LoadingSpinner } from '@/components/LoadingSpinner'
import { Suspense } from 'react';
const Header = lazy(() => import('remoteApp/Header'));
function CustomHeader() {
return (
<Suspense fallback={<LoadingSpinner />} >
<Header />
</Suspense>
);
}
export default CustomHeader;
개선된프론트엔드아키텍처(현재)
그래서우리는얼마나빠르게제품을개발하고배포할수있게되었을까요?
프론트엔드프로덕션배포소요시간
현재:<5분
기존:30~40분
프로덕션릴리즈횟수
2022년11월:173회
2022년3월:46회
ClosedPullRequest개수
신규repo:8개월간1400여개(175PRs/month)
기존repo:6년4개월간5500여개(72PRs/month)
NextSteps
Rails번들러마이그레이션
Rails에서번들러의존성을제거
개발경험개선
NextSteps-(1)Rails번들러마이그레이션
RailsWebpacker를Shakapacker로마이그레이션하여Webpack5버전을사용할뿐만아니라babel외의빌드도구
(swc,esbuild)도사용가능
NextSteps-(2)Rails에서번들러의존성을제거
Rails로부터번들러(Webpacker)의존성을분리함으로써Rails는API서버처럼동작
NextSteps-(3)개발경험개선
Remotemodule의typechecking
앱간의커뮤니케이션컨벤션정의
Bestpractice탐구
프로그래머스의프론트엔드개발경험을개선하기위한모험은계속됩니다
Recap
Rails와Vue가함께있는레포지토리에서프론트엔드개발경험이좋지않음
프론트엔드코드베이스를Rails코드와분리시켜독립적으로개발/빌드/배포할수있고점진적으로마이그레이션가능
한아키텍처를설계
Airbnb의Hypernova사례를바탕으로
신규프론트엔드애플리케이션의Webpackmanifest를Rails템플릿에임베딩
신규프론트엔드애플리케이션간의ModuleFederation을통한RuntimeIntegration
개발경험을개선하기위한노력이여전히진행중
Rails번들러마이그레이션
Rails에서번들러의존성제거
신규프론트엔드코드베이스의개발경험개선

More Related Content

What's hot

Vue.js
Vue.jsVue.js
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS ::: Game...
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS :::  Game...AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS :::  Game...
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS ::: Game...
Amazon Web Services Korea
 
트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기
Yan So
 
[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선
NAVER D2
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
Javier Lafora Rey
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
Gunhee Lee
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
DivyanshGupta922023
 
옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축sj k
 
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
CONNECT FOUNDATION
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
Ji-Woong Choi
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
Brian Hong
 
웹 프로그래밍 팀프로젝트 최종발표
웹 프로그래밍 팀프로젝트 최종발표웹 프로그래밍 팀프로젝트 최종발표
웹 프로그래밍 팀프로젝트 최종발표
Seong Heum Park
 
WebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testingWebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testing
Daniel Chivescu
 
191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기
KWANGIL KIM
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
NAVER D2
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
Amazon Web Services Korea
 
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
Jiyeon Seo
 
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
Amazon Web Services Korea
 

What's hot (20)

Vue.js
Vue.jsVue.js
Vue.js
 
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS ::: Game...
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS :::  Game...AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS :::  Game...
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS ::: Game...
 
트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기트위터의 추천 시스템 파헤치기
트위터의 추천 시스템 파헤치기
 
[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축
 
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
웹 프로그래밍 팀프로젝트 최종발표
웹 프로그래밍 팀프로젝트 최종발표웹 프로그래밍 팀프로젝트 최종발표
웹 프로그래밍 팀프로젝트 최종발표
 
WebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testingWebdriverIO: the Swiss Army Knife of testing
WebdriverIO: the Swiss Army Knife of testing
 
191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
 
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
 
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
 

Similar to 프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서

『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
복연 이
 
Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)
Junsu Kim
 
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
Hosuk Shin
 
How to build Design System?
How to build Design System?How to build Design System?
How to build Design System?
John Kim
 
주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기sung yong jung
 
Team project (for frontend)
Team project (for frontend)Team project (for frontend)
Team project (for frontend)
형석 장
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
Sunghyouk Bae
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
Sungchul Park
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
KwangSeob Jeong
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER Engineering
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
Chris Ohk
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
양재동 코드랩
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Kyuhyun Byun
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
철민 신
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
JinKwon Lee
 
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
시은 김
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
우영 주
 
[D2 오픈세미나]4.진보된개발환경 주우영
[D2 오픈세미나]4.진보된개발환경 주우영[D2 오픈세미나]4.진보된개발환경 주우영
[D2 오픈세미나]4.진보된개발환경 주우영NAVER D2
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발Jinuk Kim
 

Similar to 프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서 (20)

『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
 
Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)
 
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
 
How to build Design System?
How to build Design System?How to build Design System?
How to build Design System?
 
주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기
 
Team project (for frontend)
Team project (for frontend)Team project (for frontend)
Team project (for frontend)
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
 
[D2 오픈세미나]4.진보된개발환경 주우영
[D2 오픈세미나]4.진보된개발환경 주우영[D2 오픈세미나]4.진보된개발환경 주우영
[D2 오픈세미나]4.진보된개발환경 주우영
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 

프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서