BackEnd
Web Server ์ WAS ์ ์ฐจ์ด์
Web Server => ์ํํธ์จ์ด + ํ๋์จ์ด
- 1) ์ ์ ์ธ ์ปจํ ์ธ ์ ๊ณตํ๋ฉฐ WAS ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ์์์ ์ ๊ณตํ๋ค.
- 2) ์น ๋ธ๋ผ์ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ http ์์ฒญ(Request) ์ ๋ฐ์ WAS ์ ๋ณด๋ด๊ณ WAS ๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ (Response)
- Apache Server, NginX ๋ฑ
WAS (Web Application Server) => Web Server + Web Container (์ํํธ์จ์ด ์์ง)
- 1) ๋์ ์ธ ์ปจํ ์ธ ์ ๊ณต์ ์ํด ๋ง๋ค์ด์ง Application Server
- 2) JSP, Servlet ๊ตฌ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
- 3) Web Server ๊ธฐ๋ฅ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ๋ชฉ์
- ex) ๋ถ์ฐ ํธ๋์ญ์ , ๋ฉ์์ง, ์ฐ๋ ๋ ์ฒ๋ฆฌ, DB ์กฐํ, ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ ๋ฑ
๋ฉ์์ง ํ
ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ๋ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ๋ฒ
Kafka vs RabbitMQ
- RabbitMQ
- ๋ฉ์์ง ๋ธ๋ก์ปค ๋ฐฉ์ (์๋น์ ์ค์ฌ ์ค๊ณ), ๋๊ธฐ/๋น๋๊ธฐ์ ์ฒ๋ฆฌ
- ๋ฉ์์ง ๋ธ๋ก์ปค : ์์คํ ์ด ์ ๋ณด๋ฅผ ํต์ ํ๊ณ ๊ตํํ ์ ์๋๋ก ํ๋ ์ํํธ์จ์ด ๋ชจ๋
- ๊ตฌ์ฑ์ ์์ ๋, ์ฑ์๋, ์ ์ํ ์์ฒญ ๋ฐ ์๋ต์ด ํ์ํ ์๋ฒ์ ์ ์ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ (์ฅ๊ธฐ ์คํ ์์ )
- Kafka
- ๋ฐ์ดํฐ ๋ถ์ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ํ๋ซํผ
- pub/sub ๋ฐฉ์ (์์ฐ์ ์ค์ฌ ์ค๊ณ), ๊ตฌ๋ ๋ฐฉ์์ ๋น๋๊ธฐ์ ๊ตฌ์ฑ
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๋ถํ ๋ถ์ฐ๊ณผ ๊ณ ์ฑ๋ฅ, ์ค์๊ฐ ์ฒ๋ฆฌ
MariaDB MaxScale
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ํ์ฅ์ฑ, ๊ฐ์ฉ์ฑ ๋ฐ ๋ณด์์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
- ์ํ ํ์ฅ ๋ฐฐ์น์์ ๋ณด์, ํ์ฅ์ฑ ๋ฐ ๊ณ ๊ฐ์ฉ์ฑ์ ๊ด๋ฆฌํ๋ ์ฐจ์ธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก์
- SQL ์ฃผ์ ๋ฐ DDOS ๊ฐ์ ๋ณด์ ๊ณต๊ฒฉ ๋ฐฉ์ง
๋ฌธ์ ์ค์ํ๋?
๋ฌธ์ ์ค์ํ = ๊ฐ์ํ = ECM = ๋ง๋ถ๋ฆฌ
์ฌ๋ด ๋ชจ๋ ๋ฌธ์๋ฅผ ํ ๊ณณ(์๋ฒ)์ ๋ชจ์์ ๊ด๋ฆฌํ๋ ๊ฒ, ๋ฒ์ ๊ด๋ฆฌ๋ถํฐ ๋ฌธ์์ ์์ฑ - ์์ - ์ญ์ ์ ๊ณผ์ ์ ๊ด๋ฆฌํ ์ ์๋ค.
DLP (Data Loss Prevention)
- ๋ฌธ์ ๋ณด์์ ์ํ ๊ธฐ์
- ๋ฐ์ดํฐ ์์ค ์ฐจ๋จ
- ์ฌ๋ด ์ค์ ๋ฐ์ดํฐ์ ์ ์ถ์ ์ฐจ๋จ
DRM (Digital Right Management)
- ๋ฌธ์ ๋ณด์์ ์ํ ๊ธฐ์
- ๋ฐ์ดํฐ ์ํธํ๋ฅผ ํตํด ๋ฌธ์์ ๊ถํ(์ ์๊ถ) ๊ด๋ฆฌ
FrontEnd
React JSX ๋?
- ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๊ธฐ ์ ์ ๋ฒ๋ค๋ง๋๋ ๊ณผ์ ์์ babel ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ HTML ์์ฑํ๋ฏ์ด ๋น์ทํ๊ฒ ํ ์ ์๋ค.
- react ์ virtual dom ์ ์ปดํฌ๋ํธ ๋ณํ๋ฅผ ๊ฐ์งํ ๋ ํจ์จ์ ์ผ๋ก ๋น๊ตํ๊ณ ์ ์ปดํฌ๋ํธ ๋ด๋ถ๊ฐ ํ๋์ DOM ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค๋ ๊ท์น์ด ์์ -> ์ปดํฌ๋ํธ์ ์ฌ๋ฌ ์์๊ฐ ์์ ๊ฒฝ์ฐ ๋ฐ๋์ ํ๋์ ์์๊ฐ ๊ฐ์ธ๋ ํํ์ฌ์ผ ํ๋ค.
function App(){
return(
<div>
<h1>ํ
์คํธ1</h1>
<h2>ํ
์คํธ2</h2>
</div>
)
}
React HOC (Higher-Order Component, ๊ณ ์ฐจ ์ปดํฌ๋ํธ) ๋?
- ์ปดํฌ๋ํธ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋๊ณ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์์ ์ ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ๋ ํจ์
- render ์์์ ์ฌ์ฉํ๋ฉด ์๋๋ค.
- ref ๋ ์ ๋ฌ๋์ง ์๋๋ค.
App.js
import './App.js';
import SecondComponent from './Component/SecondComponent';
function App() {
return(
<div>
<h1 classname="App-header">
HOC ํ
์คํธ
<SecondComponent name="whatishoc"></SecondComponent>
</h1>
</div>
)
}
export default App;
- ํ๋ฉด์ "HOC ํ ์คํธ" ํ ์คํธ ๊ทธ๋ฆผ
- SecondComponent ํธ์ถ๋จ (ํ๋ผ๋ฏธํฐ: whatishoc)
SecondComponent.js
import React, { Component } from 'react';
import ThirdComponent from './ThirdComponent';
class SecondComponent extends Component {
render(){
console.log('2. Second render');
return(
<div>props.name : {this.props.name}</div>
)
}
}
export default ThirdComponent(SecondComponent, 'Test');
- FirstComponent ์์ SecondComponent ๊ฐ ํธ์ถ๋์์ผ๋ ThirdComponent ๊ฐ export ๋๊ธฐ ๋๋ฌธ์ SecondComponent ์์ render ํจ์๋ ์คํ๋์ง ์์
- ํ๋ผ๋ฏธํฐ๋ก SecondComponent ์์ฒด์ 'Test' ๋ผ๋ ํ ์คํธ ์ ๋ฌ
- SecondComponent ์ this.props.name ์ App.js ์์ ์ ๋ฌํ whatishoc ์
ThirdComponent.js
import React from 'react';
export default function ThirdComponent(DrawComponent, DrawContent){
return class ExportComponent extends React.Component {
componentDidMount(){
console.log(`3. ThirdComponent : ${DrawContent}`);
}
render(){
console.log('1. First Component');
return(
<DrawComponent {...this.props}></DrawComponent>
)
}
}
}
- ThirdComponent ๋ด render ํจ์ ์์์ ์ฝ์์ 1. First Component ๋จผ์ ์ถ๋ ฅ
- ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ DrawComponent (=SecondComponent) ๋ฅผ ๊ทธ๋ฆผ
- ์ฝ์์ 2. Second render ์ถ๋ ฅ -> ํ๋ฉด์ props.name : whatishoc ๊ทธ๋ฆผ
- ์ปดํฌ๋ํธ๊ฐ ์ฒซ ๋ ๋๋ง ๋ ์ดํ ํธ์ถ๋๋ ํจ์์ธ componentDidMount ์คํ -> ์ฝ์์ 3. ThirdComponent : Test ์ถ๋ ฅ
mount _ ์ปดํฌ๋ํธ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋์ด DOM ์ ์ฝ์ ๋๋ ๋จ๊ณ
- constructor : ์ปดํฌ๋ํธ์ ์ธ์คํด์ค๋ฅผ ์๋ก ๋ง๋ค ๋๋ง๋ค ์์ฑ์ ๋ฉ์๋๊ฐ ํธ์ถ๋จ
- render : ํ๋ฉด์ ํํ๋ JSX ๋ฅผ ๋ฐํํ๊ณ ํ๋ฉด์ ๊ทธ๋ฆผ
- componentDidMount : ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ชจ๋ ๊ทธ๋ ค์ง ํ ํธ์ถ๋จ, ์๋ํฌ์ธํธ์์ ํด๋ผ์ด์ธํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ API ํธ์ถํ๊ธฐ ์ข์ ์์น
React.lazy ๋?
- ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง ํ๋ ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ฉํ ์ ์๊ฒ ํด์ฃผ๋ util ํจ์ (๋์ import ๊ฐ๋ฅ)
- ํด๋น ํ์ผ์ด ๋ง์ดํธ๋ ๋ ์ํฌํธ๋ฅผ ํ๋ ๊ฒ์ด ์๋ ์ด๋ค ์์ ์์ (ex. ํด๋ฆญ์ด๋ฒคํธ) ๋ก๋ฉ ๋๋๋ก ํ๋ค. ํผํฌ๋จผ์ค ๋ฉด์์ ์ข์. (router ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์)
// Hello.js
export default function Hello() {
return <div>Hello</div>
}
// App.js
const hello = React.lazy(() => import("./Hello"));
const App = () => {
return(
<div>
<Suspense fallback={<div>๋ก๋ฉ ์ค์
๋๋ค.</div>}>
<!--fallback ์ ๋ก๋ฉ์ด ๋๋์ง ์์์ ๋ ๋ณด์ฌ์ค UI -->
{visible && <hello />}
</Suspense>
</div>
)
}
export default App;
Suspense
- ๋ฆฌ์กํธ ๋ด์ฅ ์ปดํฌ๋ํธ, ์ฝ๋ ๋ถํ ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ก๋ฉํ๋๋ก ํ ์ ์๊ณ , ๋ก๋ฉ์ด ๋๋์ง ์์์ ๋ ๋ณด์ฌ์ค UI ๋ฅผ ์ค์ ํ ์ ์๋ค.
- Suspense ์ fallback ์ ๋ก๋ฉ์ด ๋๋์ง ์์์ ๋ ๋ณด์ฌ์ค UI ์ด๋ค.
Git
Git ์์ --recursive ์ต์ ์ ์๋ฏธ
- ํ์ ์๋ธ ๋ชจ๋๊น์ง ๋ชจ๋ clone ํ๋ค.
- ์๋ธ ๋ชจ๋์ด๋ผ๊ณ ํ๋ฉด, ๊ธฐ์กด ์ ์ฅ์ ํ์์ ๋ค๋ฅธ ์ ์ฅ์๊ฐ ์กด์ฌํ๋ ๊ฒ์ด๋ค.
'๊ธ์ฐ๋ ๊ฟ๋ฒ ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Dev Study #4 (feat. Design Pattern) (0) | 2022.02.21 |
---|---|
Dev Study #3 (feat. Design Pattern) (0) | 2022.02.18 |
Dev Study #2 (feat. JAVA) (0) | 2022.02.18 |
[Book Review] ์ธ์์ ์ค์ ์ด๋ค (0) | 2021.10.07 |
๋๊ธ