0906 - 0919


# 0906 - 0919

# 0907 - Static, Stack, Heap / Java ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ ๋ฐ ๋ช…๋ น์„ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์•ผํ•จ.
๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๊ฐ€ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ž„์‹œ๋กœ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„. ๋™์ž‘์€ ํ•˜๋“œ๋””์Šคํฌ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์„œ ์‹คํ–‰๋˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฃผ ๊ธฐ์–ต ์žฅ์น˜๋ผ๊ณ  ๋ถ€๋ฆ„
=> ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‚ฌ์šฉ ๊ณต๊ฐ„์ด ํ•œ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜์–ด์•ผํ•จ.

# Static Area (์Šคํƒœํ‹ฑ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)

  • static(์ •์ )์€ ๊ณ ์ •๋œ ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. static ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์  ํ•„๋“œ์™€ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‘ ๊ฐ€์ง€๋ฅผ ํ•ฉ์ณ์„œ ์ •์  ๋ฉค๋ฒ„๋ผ๊ณ  ํ•œ๋‹ค.(= ํด๋ž˜์Šค ๋ฉค๋ฒ„)
  • Static Area(์Šคํƒœํ‹ฑ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)์—์„œ๋Š” ํ•„๋“œ ๋ถ€๋ถ„์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜(์ „์—ญ ๋ฒฝ์ˆ˜)์™€ ์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜(static์ด ๋ถ™์€ ์ž๋ฃŒํ˜•)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • Static Area(์Šคํƒœํ‹ฑ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)์— ๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊ฐ€์ง€ ์–ด๋””์„œ๋“ ์ง€ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฃผ์˜ํ•  ์ ์€ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

*** ๊ฐ์ฒด์— ์†Œ์†Œ๋œ ๋ฉค๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค์— ๊ณ ์ •๋œ ๋ฉค๋ฒ„

# Stack Area (์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)

  • ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ์ •์˜ํ•˜๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์— ํ•ด๋‹น๋˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์ด Stack Area์ด๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๊ณ , ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง„๋‹ค.
  • ์ฐธ์กฐํ˜• ํƒ€์ž… ๋ณ€์ˆ˜๋Š” ์ฐธ์กฐ๊ฐ’๋งŒ ์ €์žฅ๋œ๋‹ค. ์ด ์ฐธ์กฐ๊ฐ’์€ Heap ์˜์—ญ์— ์กด์žฌํ•˜๋Š” ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.(์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ ๊ฐ’)

*** ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ •์˜ํ•˜๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•

  • ํ”„๋กœ์„ธ์Šค๋Š” ์™„๋ฒฝํžˆ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ํ•˜์ง€ ์•Š์ง€๋งŒ, ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ํ•ด๋‹น ์Šค๋ ๋“œ๋ฅผ ์œ„ํ•œ Stack์˜์—ญ์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ์˜ ์ ‘๊ทผ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ static, heap ์˜์—ญ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋“ค์€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

# Heap Area (ํž™ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)

  • ์ฐธ์กฐํ˜•(Reference Type)์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ–๋Š” ๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ์€ Heap ์˜์—ญ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  • ์ด๋•Œ ๋ณ€์ˆ˜(๊ฐ์ฒด, ๊ฐ์ฒด ๋ณ€์ˆ˜, ์ฐธ์กฐ ๋ณ€์ˆ˜)๋Š” Stack ์˜์—ญ์˜ ๊ณต๊ฐ„์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ Heap ์˜์—ญ์˜ ์ฐธ์กฐ๊ฐ’(Reference key, ํ•ด์‹œ ์ฝ”๋“œ = ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฐ’)์„ new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌํ„ด ๋ฐ›๋Š”๋‹ค.
    • ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Heap ์˜์—ญ์˜ ์ฃผ์†Œ ๊ฐ’์„ Stack ์˜์—ญ์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ
  • ์ด๋ ‡๊ฒŒ ๋ฆฌํ„ด ๋ฐ›์€ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ๋งŒ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ธ์Šคํ„ด์Šค์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” Heap ์˜์—ญ์— ์˜ฌ๋ผ๊ฐ„๋‹ค. ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— static ๋ฉ”์„œ๋“œ์—์„œ ์™ธ๋ถ€ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

*** Heap์€ ์ฐธ์กฐํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์— ์‹ค์ œ ๋ฐ์ดํ„ฐ๋“ค์ด ๋‹ด๊ธฐ๋Š” ๊ณต๊ฐ„์ด๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Heap ์˜์—ญ์˜ ์ฐธ์กฐ๊ฐ’์„ Stack ์˜์—ญ์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ

*** new๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ, heap ์˜์—ญ์—๋Š” ์ƒ์„ฑ๋œ ๊ฐ์ฒด๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ณ , Stack ์˜์—ญ์—๋Š” ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฃผ์†Œ ๊ฐ’(Reference)์ด ์ €์žฅ

*** ์–ด๋–ค ์ฐธ์กฐ ๋ณ€์ˆ˜๋„ Heap ์˜์—ญ์— ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค๋ฉด, GC์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง„๋‹ค.


# 0909 - jacoco

# JaCoCo

Java code coverage์˜ ์•ฝ์ž๋กœ jUnit ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ปค๋ฒ„๋ฆฌ์ง€์˜ ํˆด
์ฝ”๋“œ์ •์ ๋ถ„์„๋„๊ตฌ์ธ sonarqube์™€ ์—ฐ๊ณ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

# JaCoCo ํŠน์ง•

  • Line, Branch Coverage๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์ข‹๋„๋ก ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    • html, xml, csv ๋“ฑ์œผ๋กœ Report๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ค์ •ํ•œ ์ปค๋ฒ„๋ฆฌ์ง€ ๊ธฐ์ค€์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

# JaCoCo Maven ์˜ˆ์ œ

# jacoco ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€

<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.8.2</version> 
    <executions> 
        <execution> 
            <goals> 
                <goal>prepare-agent</goal> 
            </goals> 
        </execution> 
        <execution> 
            <id>report</id> 
            <phase>test</phase> 
            <goals> 
                <goal>report</goal> 
            </goals> 
        </execution> 
    </executions> 
</plugin>

# JacocoController.java

package com.example.jacocotest;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class JacocoController {
    @GetMapping("/test")
    public String test(@RequestParam int n) {
        if (n >= 0) {
            return "hello";
        } else {
            return "world";
        }
    }
}

# JacocoControllerTest.java

package com.example.jacocotest;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;

@SpringBootTest
@AutoConfigureMockMvc
public class JacocoControllerTest {
    @Autowired
    private MockMvc mvc;

    @Test
    public void test() throws Exception {
        mvc.perform(get("/test").param("n", "3")).andExpect(content().string("hello")).andExpect(status().isOk());
    }
}

# mvn package

  • mvn package ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

maven์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์˜ phase๋Š”
validate -> compile -> test -> package -> install -> deploy
test ์ดํ›„ package๋ฅผ ํ• ๋•Œ Jacoco๊ฐ€ ํ™œ์•ฝํ•˜๋ฏ€๋กœ package๊นŒ์ง€๋งŒ ์ž…๋ ฅ์‹œ์—๋„ Jacoco๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

# ํŠน์ • ์ผ€์ด์Šค ์ œ์™ธ

  • plugin์— configuration์œผ๋กœ ์ œ์™ธ
<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.8.2</version> 

    <configuration>
        <excludes> 
            <exclude>**/*Application.class</exclude> 
        </excludes>
    </configuration>

    <executions> 
       ...
    </executions> 
</plugin>

# 0910 - SSR, CSR

# SSR(Server Side Rendering)

ํŽ˜์ด์ง€ ์š”์ฒญ์„ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง์„ ๋งˆ์น˜๊ณ , data๊ฐ€ ๊ฒฐํ•ฉ๋œ htmlํŒŒ์ผ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹.

  • ์žฅ์ 
    • CSR์— ๋น„ํ•ด ๋‹ค์šด ๋ฐ›๋Š” ํŽ˜์ด์ง€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ ์–ด ์ดˆ๊ธฐ ๋กœ๋”ฉ์†๋„๊ฐ€ ๋น„๊ต์  ๋น ๋ฅด๋‹ค.
    • HTML์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ํฌํ•จ๋˜์–ด ์žˆ์–ด ๋ชจ๋“  ๊ฒ€์ƒ‰์—”์ง„์— ๋Œ€ํ•œ SEO(๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”)๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹จ์ 
    • ๋งค๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ํ™”๋ฉด ๊นœ๋นก์ž„์ด ๋ฐœ์ƒํ•œ๋‹ค.
    • ํŽ˜์ด์ง€ ์ด๋™์‹œ ์„œ๋ฒ„์— ๋งค๋ฒˆ ์š”์ฒญ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง„๋‹ค.

# CSR(Client Side Rendering)

์ตœ์ดˆ ๋กœ๋”ฉ ์‹œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— html์„ ๋น„๋กฏํ•œ css, javascript ๋“ฑ ๊ฐ์ข… ๋ฆฌ์†Œ์Šค๋“ค์„ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ์‹์ด ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง ๋ฐฉ์‹์ด๋‹ค.

  • ์žฅ์ 
    • ์ดˆ๊ธฐ ์š”์ฒญ์„ ์ œ์™ธํ•˜๊ณ ๋Š” SSR์— ๋น„ํ•ด ๋น ๋ฅธ ํŽ˜์ด์ง€ ์ „ํ™˜ ์†๋„์™€ ๊นœ๋นก์ž„ ์—†๋Š” UX๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ์ ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋ถ€๋‹ด์ด SSR์— ๋น„ํ•ด ์ ๋‹ค.
  • ๋‹จ์ 
    • ์ตœ์ดˆ ๋กœ๋”ฉ ์‹œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋“ค์„ ๋ฐ›์•„์™€์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์— ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
    • ์ฒ˜์Œ์—๋Š” HTML์ด ๋น„์–ด ์žˆ์–ด ํฌ๋กค๋Ÿฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— SEO ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    • ์ฟ ํ‚ค๋‚˜ localStorage์—์„œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜๋‹ค.

# 0911 - Docker Redis ์„ค์น˜

# ๋„์ปค๋กœ ๋ ˆ๋””์Šค ์„ค์น˜

  • ๋ ˆ๋””์Šค ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
$ docker pull redis
  • ์ด๋ฏธ์ง€ ํ™•์ธ
$ docker images
  • ๋ ˆ๋””์Šค ์„œ๋ฒ„ ์‹คํ–‰
$ docker run --name ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„ -d -p 6379:6379 rdis
  • Docker์˜ redis-cli๋กœ ์ ‘์†ํ•˜๊ธฐ
$ docker run -it --link ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„:redis --rm redis redis-cli -h redis -p 6379
  • Shell๋กœ Docker ๋ฆฌ๋ˆ…์Šค์— ์ ‘์†ํ•˜๊ธฐ
$ docker ps
$ docker exec -it ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„ /bin/bash
  • ๋„์ปค์šฉ redis.conf
daemonize no
# bind 127.0.0.1
protected-mode no
port 6001
logfile "redis.log"
dir /data
  • redis.conf ํŒŒ์ผ ์ง€์ •ํ•ด์„œ ์‹คํ–‰: volume ์ง€์ •
$ docker run -v /root/docker/redis-5.0.3/6001:/data --name myredis -d -p 6001:6001 redis redis-server /data/redis.conf   

# 0918 - docker(๋„์ปค) ์ด๋ก 

# ๋„์ปค๋ž€?

๋„์ปค๋ž€, ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ์ด๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ์†ํ•˜๊ฒŒ ๊ตฌ์ถ•, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ
  • ๋„์ปค๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋ผ๋Š” ํ‘œ์ค€ํ™” ๋œ ์œ ๋‹›์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋ฉฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์‹œ์Šคํ…œ ๋„๊ตฌ, ์ฝ”๋“œ, ๋Ÿฐํƒ€์ž„ ๋“ฑ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ํฌํ•จ
  • ํ™˜๊ฒฝ์— ๊ตฌ์•  ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

# ์ปจํ…Œ์ด๋„ˆ

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์€ ํ˜ธ์ŠคํŠธOS๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด ๊ฐ€๋ณ๋‹ค.
  • VM๊ณผ์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. VM์€ ๊ฐ€์ƒ๋จธ์‹ ๋“ค ์‚ฌ์ด์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ• ๋–„ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๋ฐ˜๋ฉด, ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์€ ๋…๋ฆฝ์ ์œผ๋กœ, ํ˜ธ์ŠคํŠธOS์˜ ์ž์›์„ ๊ณต์œ ํ•˜๋ฉฐ ๊ฐ๊ฐ ํ•„์š”ํ•œ ์ž์›๋“ค์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๋‹ค. **์˜ค๋ฒ„ํ—ค๋“œ : ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋“ค์–ด๊ฐ€๋Š” ๊ฐ„์ ‘์ ์ธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ

# ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ์„ฑ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„์ปคํŒŒ์ผ์ด๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•œ๋‹ค.
๊ฐ€์ƒํ™” ํ•  ํ”„๋กœ๊ทธ๋žจ๋“ค์„ '๋„์ปคํŒŒ์ผ'์ด๋ž€ DSL(Domain Specific Laguage)ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ์„ฑ๊ณผ์ •
๋„์ปคํŒŒ์ผ -> (build) = ๋„์ปค์ด๋ฏธ์ง€ ์ƒ์„ฑ
๋„์ปค์ด๋ฏธ์ง€ -> (run) = ๋„์ปค์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
Last update: September 13, 2022 21:44
Contributors: ahnjs