๋ฉ‹์‚ฌ Backend Plus 2์ผ์ฐจ ๐Ÿฆ

์‹ ์žฌ์›ยท2023๋…„ 10์›” 24์ผ

Spring / Java ์‹ฌํ™” ๊ณผ์ •์ด์ง€๋งŒ ์˜ค๋Š˜์€ Node.js ์— ๋Œ€ํ•ด ๋ฐฐ์› ๊ณ , JS ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. (๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ๋Š” ๋งˆ์ง€๋ง‰์— ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.)


ํ™์ˆ˜์ฒ˜๋Ÿผ ๊ฐœ๋…๊ณผ ๋ฌธ๋ฒ•์ด ์Ÿ์•„์กŒ๋‹ค.... ๊ฐ„๋žตํ•˜๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค

Node.js

Node.js ๋Š” ๋‹ค์šด๋กœ๋“œ ๋งํฌ ์— ์ ‘์†ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ OS์˜ ๋งž๊ฒŒ ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํˆด (๋„๊ตฌ) ๋กœ๋Š” vscode ๋ฅผ ์‚ฌ์šฉ ํ•œ๋‹ค๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค.
vscode ๋‹ค์šด๋กœ๋“œ ๋งํฌ
(Js ๊ฐœ๋ฐœ์€ vscode ๊ฐ€ ํŽธํ•˜๋‹ค๊ณ  ํ•˜์‹ญ๋‹ˆ๋‹ค.)

Node.js์˜ ํŠน์ง•

๋งŽ์€ ํŠน์ง•์ด ์žˆ์ง€๋งŒ, Node.js ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋น„๋™๊ธฐ์‹ ๋‹จ์ผ ์“ฐ๋ ˆ๋“œ ์„œ๋ฒ„๋ผ๋Š” ๊ฒƒ์ด๋‹ค.


์—ฌ๊ธฐ์„œ ๋น„๋™๊ธฐ์‹์˜ ๋ฐ˜๋Œ€๋ง์€ ๋™๊ธฐ์‹์ด๋‹ค.

๋น„๋™๊ธฐ์‹ vs ๋™๊ธฐ์‹

  • ๋น„๋™๊ธฐ์‹ : ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ณ , ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ ๋‹ค์Œ ์š”์ฒญ์„ ๋ณด๋‚ผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋™๊ธฐ์‹ : ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋‹ค์Œ ์š”์ฒญ์„ ๋ณด๋‚ผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

EX : Java๋Š” ์ฃผ๋กœ ๋™๊ธฐ์‹


ํŠน์ง•์—์„œ ์“ฐ๋ ˆ๋“œ ํ‚ค์›Œ๋“œ๋„ ๋ˆˆ์— ๋ณด์ผ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์“ฐ๋ ˆ๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ์„ธ์Šค๊ฐœ๋…๊ณผ ๊ตฌ๋ถ„์ง€์–ด ์„ค๋ช…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค vs ์“ฐ๋ ˆ๋“œ

  • ํ”„๋กœ์„ธ์Šค : ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด CPU ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์“ฐ๋ ˆ๋“œ : ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ๋‹จ์œ„ ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ํ•˜์œ„ ๊ฐœ๋…

์‹ค์Šต

์‹ค์Šต์— ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ์ €๋Š” Java / Spring, ํƒ€์ž„๋ฆฌํ”„ ์ •๋„ ๋งŒ ๊ฒฝํ—˜ํ•ด๋ดค์œผ๋ฉฐ,
ํ”„๋ก ํŠธ ์—”๋“œ ์–ธ์–ด์— ๋Œ€ํ•ด์„œ๋Š” ์„ค๋ช…์ด ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(๊ฐœ๋…๋“ค์ด ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹ค....)

ํ”„๋ผ๋ฏธ์Šค

  • ํ”„๋ผ๋ฏธ์Šค๋ž€ ๋™๊ธฐ๋ฅผ ๋น„๋™๊ธฐ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
let ์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, var ํ‚ค์›Œ๋“œ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์˜ˆ์ „ ๋ฐฉ์‹ ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

let limit = 1000;

// Promise ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ƒ์„ฑ
let promise = new Promise( function(resolve, reject){
    if(limit < 10){
        reject("10๋ณด๋‹ค ๊ฐ’์ด ์ž‘์Šต๋‹ˆ๋‹ค.");
    }

    s = 0;
    for(i = 1; i <=limit; i++){
        s += i;
    }

    resolve(s);
})
.then( (res) =>{ // resolve๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ then ๊ตฌ๋ฌธ์ด ํ˜ธ์ถœ๋œ๋‹ค.
    console.log(res); // ๋‚˜์ค‘์— ํ˜ธ์ถœ๋œ๋‹ค.
})
.catch( (error) => {
    console.log(error);
});

console.log("end-----------") // ๋จผ์ € ํ˜ธ์ถœ๋œ๋‹ค.

// ์ถœ๋ ฅ
// end-----------
// 500500

express

  • express ๋Š” ์›น ํ”„๋ ˆ์ž„ ์›Œํฌ์ด๋ฉฐ, Node.js ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • vscode์˜ ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ npm install express๋กœ ์„ค์น˜ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

async, await

await ๋Š” async ์•ˆ์—์„œ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
async ๋Š” ํ•ญ์ƒ ํ”„๋ผ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

async function sigma2(limit = 10){
    let promise = new Promise( function(resolve, reject){
        s =0;
        for(i = 1; i <= limit; i++){
    
            s+= i;
    
        }
        resolve(s); // ์„ฑ๊ณตํ•จ
    });

    let result = await promise;
    return result;
}

ํ•ด๋‹น ๋กœ์ง์—์„œ ์‹ ๊ธฐํ•จ์„ ์กฐ๊ธˆ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.
Java์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์— ๊ฐ’์„ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค๋Š” ์ ์ด์˜€์Šต๋‹ˆ๋‹ค.


์ปดํŒŒ์ผ ์–ธ์–ด (Java) vs ์ธํ„ฐํ”„๋ฆฐํ„ฐ ์–ธ์–ด (Js)

  • ์ปดํŒŒ์ผ ์–ธ์–ด : ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ• ๋•Œ ์ „์ฒด์ ์ธ ๋กœ์ง์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๋ฌด์กฐ๊ฑด์  ์„ ์–ธ, ๋””๋ฒ„๊น…๊ณผ ์—๋Ÿฌ ์žก๊ธฐ๊ฐ€ ์‰ฌ์›€
  • ์ธํ„ฐํ”„๋ฆฐํ„ฐ ์–ธ์–ด : ๋Œ€๋ถ€๋ถ„ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ๋ชปํ•จ, ๋””๋ฒ„๊น…๊ณผ ์—๋Ÿฌ ์žก๊ธฐ๊ฐ€ ์–ด๋ ค์›€

๋งˆ๋ฌด๋ฆฌ

๊ฐ•์‚ฌ๋‹˜ ๋ง์”€์œผ๋กœ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด์˜ค๋ฉด์„œ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ฐœ๋ฐœํ• ๋•Œ ํƒ€์ž„๋ฆฌํ”„ ํ˜น์€ jsp ๋ฅผ ์‚ฌ์šฉํ•ด์™”์„ ๊ฑฐ๋ผ๊ณ  ํ•˜์…จ๋‹ค.
โžก jsp ๋Š” ์‹œ์žฅ์—์„œ ๋ฌปํžˆ๋Š” ์–ธ์–ด์ž„, ๋ฐฐ์šฐ๋Š”๊ฑธ ๊ถŒ์žฅ X

Node.js ๋ฅผ ๋ฐฐ์›€์œผ๋กœ์จ ์ถ”ํ›„ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐฑ์—”๋“œ ๋‹จ ๊ณผ ํ”„๋ก ํŠธ์—”๋“œ ๋‹จ์„ ๋‘˜๋‹ค ๊ตฌํ˜„ํ•˜๊ธฐ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ๊ณ„์‹œ๊ณ , SpringBoot ๋Š” ์˜จ์ „ํžˆ RestFul Api ๊ฐ€ ์ฃผ ๊ฐ€ ๋˜๊ฒŒ ํ•ด์•ผ ๋œ๋‹ค๊ณ  ํ•˜์‹ฌ

Node.js ๋ฅผ ๋ฐฐ์›€์œผ๋กœ์จ, Vue, React ๋„ ์กฐ๊ธˆ ํ•œ๋‹ค๊ณ  ํ•˜์‹ฌ
โžก ์ทจ์—… ๋‚˜๊ฐˆ๋•Œ ๊ทธ๋ž˜๋„ ์กฐ๊ธˆ์ด๋ผ๋„ ์œ ๋ฆฌํ• ๊ฑฐ๋ผ๊ณ  ํ•˜์‹ ๋‹ค.

๊ฐ•์‚ฌ๋‹˜์ด ๋‹ค์–‘ํ•œ ๋ง์”€์„ ํ•ด์ฃผ์…จ์ง€๋งŒ, ์งœ์˜ค์‹  ์ž์„ธํ•œ ์ปค๋ฆฌํ˜๋Ÿผ์€ ๋‚ด์ผ ์•Œ๋ ค์ฃผ์‹ ๋‹ค๊ณ  ํ•˜์‹ ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€