1. ์„ ํƒ์ •๋ ฌ(Selection Sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ œ์ž๋ฆฌ ์ •๋ ฌ(in-place sorting) ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜
    → merge sort๋‚˜ quick sort์ฒ˜๋Ÿผ ์š”์†Œ๋ถ„ํ• ์‹œ ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ •๋ ฌ. ๋ฒ„๋ธ”, ์‚ฝ์ž…, ์„ ํƒ์ •๋ ฌ ๋“ฑ
  • ํ•ด๋‹น ์ˆœ์„œ์— ์›์†Œ๋ฅผ ๋„ฃ์„ ์œ„์น˜๋Š” ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๊ณ , ๊ทธ ์œ„์น˜์— ์–ด๋– ํ•œ ์›์†Œ๋ฅผ ๋„ฃ์„์ง€ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ์ค‘ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.
  • ๊ทธ ๊ฐ’์„ ๋งจ ์•ž์— ์œ„์น˜ํ•œ ๊ฐ’๊ณผ ๊ต์ฒด
  • ๋งจ ์ฒ˜์Œ ์œ„์น˜๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ต์ฒด
  • ํ•˜๋‚˜์˜ ์›์†Œ๋งŒ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ์œ„ ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณต

 

2. ์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„

# include <stdio.h>
# define SWAP(x, y, temp) ( (temp)=(x), (x)=(y), (y)=(temp) )
# define MAX_SIZE 5

// ์„ ํƒ ์ •๋ ฌ
void selection_sort(int list[], int n){
  int i, j, least, temp;

  // ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋Š” ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— (์ˆซ์ž ๊ฐœ์ˆ˜-1) ๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค.
  for(i=0; i<n-1; i++){
    least = i;

    // ์ตœ์†Ÿ๊ฐ’์„ ํƒ์ƒ‰ํ•œ๋‹ค.
    for(j=i+1; j<n; j++){
      if(list[j]<list[least])
        least = j;
    }

    // ์ตœ์†Ÿ๊ฐ’์ด ์ž๊ธฐ ์ž์‹ ์ด๋ฉด ์ž๋ฃŒ ์ด๋™์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    if(i != least){
        SWAP(list[i], list[least], temp);
    }
  }
}

void main(){
  int i;
  int n = MAX_SIZE;
  int list[n] = {9, 6, 7, 3, 5};

  // ์„ ํƒ ์ •๋ ฌ ์ˆ˜ํ–‰
  selection_sort(list, n);

  // ์ •๋ ฌ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
  for(i=0; i<n; i++){
    printf("%d\n", list[i]);
  }
}

 

 

 

3. ์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

3-1. ์žฅ์ 

  • ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.
  • ์ž๋ฃŒ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋จ.
  • ๋น„๊ตํ•˜๋Š” ํšŸ์ˆ˜์— ๋น„ํ•ด ๊ตํ™˜์ด ์ ๊ฒŒ ์ผ์–ด๋‚จ.

3-2. ๋‹จ์ 

  • ์•ˆ์ •์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
    → ๊ฐ’์ด ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒ๋Œ€์ ์ธ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค ๋น„ํšจ์œจ
    → ๋ฒ„๋ธ”์ •๋ ฌ์— ๋น„ํ•ด ์กฐ๊ธˆ ๋” ๋น ๋ฅธ ์ •๋ ฌ๋ฐฉ์‹

 

๋”๋ณด๊ธฐ

์ฐธ๊ณ ) https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html

 

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์„ ํƒ ์ •๋ ฌ(selection sort)์ด๋ž€ - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

์ฐธ๊ณ ) https://cocoon1787.tistory.com/687

 

[Algorithm] ์„ ํƒ ์ •๋ ฌ(Selection Sort) ์ด๋ž€?

๐Ÿ“– ์„ ํƒ ์ •๋ ฌ(Selection Sort)์ด๋ž€? ์„ ํƒ ์ •๋ ฌ(Selection Sort)์€ ํ•ด๋‹น ์ˆœ์„œ์— ์›์†Œ๋ฅผ ๋„ฃ์„ ์œ„์น˜๋Š” ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๊ณ , ๊ทธ ์œ„์น˜์— ์–ด๋– ํ•œ ์›์†Œ๋ฅผ ๋„ฃ์„์ง€ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๐Ÿ”Ž ์„ ํƒ ์ •๋ ฌ์˜ ํŠน์ง• ์‹œ

cocoon1787.tistory.com

์ฐธ๊ณ ) https://yabmoons.tistory.com/250

 

[ ์ •๋ ฌ ] ์ •๋ ฌ๋ณ„ ์žฅ๋‹จ์  ๋ฐ ์‹œ๊ฐ„๋ณต์žก๋„

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ •๋ ฌ๋ณ„ ์žฅ๋‹จ์  ๋ฐ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋น„๊ตํ•จ์œผ๋กœ์จ ์–ด๋–ค ์ •๋ ฌ์ด ์ œ์ผ ์ข‹๊ณ  ๋‚˜์œ์ง€๋ฅผ ์•Œ์•„๋ณด์ž ! ์‚ฌ์‹ค ์ด ์ •๋ ฌ๋ฒ•์ด ๋ฌด์กฐ๊ฑด ์ œ์ผ ์ข‹์•„์š” ! ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ ฌ๋ฒ•์€ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ

yabmoons.tistory.com

 

1. ๋ฒ„๋ธ”์ •๋ ฌ(bubble sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ์ž‘์€ ๊ฐ’์„ ์•ž์œผ๋กœ ๋ณด๋‚ด์–ด ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ธ์ ‘ํ•œ 2๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋˜์–ด์žˆ์ง€ ์•Š์œผ๋ฉด ์„œ๋กœ ๊ตํ™˜
  • ์„ ํƒ ์ •๋ ฌ๊ณผ ๊ธฐ๋ณธ ๊ฐœ๋…์ด ์œ ์‚ฌ
    → ๋ฒ„๋ธ”์ •๋ ฌ : ์š”์†Œ๋ฅผ ๊ตํ™˜ ์ •๋ ฌ / ์•ˆ์ •์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ / ์†๋„๋А๋ฆผ / ๊ฐ„๋‹จํ•˜๊ณ  ๋น„ํšจ์œจ์ 
    → ์„ ํƒ์ •๋ ฌ : ์š”์†Œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ •๋ ฌ / ๋ถˆ์•ˆ์ •ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ / ๋ฒ„๋ธ”์ •๋ ฌ์— ๋น„ํ•ด ๋น ๋ฆ„ / ํšจ์œจ์ 
    โ€ป ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชฉ๋ก์ด๋‚˜ ๋ฐฐ์—ด์—์„œ ์ •๋ ฌ ์ „ ๋ฐœ์ƒํ•˜๋Š” ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๋™์ผํ•œ ํ‚ค๊ฐ€ ์žˆ๋Š” ์š”์†Œ๊ฐ€ ์•ˆ์ •์ ์ด๋ผ ๊ฐ„์ฃผ

 

2. ๋ฒ„๋ธ”์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„

์ฒซ ๋ฒˆ์งธ ์ž๋ฃŒ์™€ ๋‘ ๋ฒˆ์งธ ์ž๋ฃŒ๋ฅผ, ๋‘ ๋ฒˆ์งธ ์ž๋ฃŒ์™€ ์„ธ ๋ฒˆ์งธ ์ž๋ฃŒ๋ฅผ, ์„ธ ๋ฒˆ์งธ์™€ ๋„ค ๋ฒˆ์งธ๋ฅผ ๋น„๊ต …

์ด๋Ÿฐ ์‹์œผ๋กœ (๋งˆ์ง€๋ง‰-1)๋ฒˆ์งธ ์ž๋ฃŒ์™€ ๋งˆ์ง€๋ง‰ ์ž๋ฃŒ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ตํ™˜ํ•˜๋ฉด์„œ ์ž๋ฃŒ๋ฅผ ์ •๋ ฌ.

 

#include <stdio.h>
#include <stdlib.h>

int main() {
	int i, j, temp;
	int arr[10] = { 1, 9, 4, 6, 11, 10, 3, 15, 2, 13 };
	for (i = 0; i < 10; i++) {
		for (j = 0; j < 9 - i; j++) {
			if (arr[j] > arr[j + 1]) {
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < 10; i++)
		printf("%d ", arr[i]);

	return 0;
}

 

3. ๋ฒ„๋ธ”์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

3-1. ์žฅ์ 

  • ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๋‹ค.

3-2. ๋‹จ์ 

  • ํ•˜๋‚˜์˜ ์š”์†Œ๊ฐ€ ๊ฐ€์žฅ ์™ผ์ชฝ์—์„œ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด์—์„œ ๋ชจ๋“  ๋‹ค๋ฅธ ์š”์†Œ๋“ค๊ณผ ๊ตํ™˜๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ์—ฐ์‚ฐ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์•„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€์žฅ ๋А๋ฆฌ๊ณ  ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ์ •๋ ฌ๋ฐฉ์‹.

→ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฃŒ์˜ ๊ตํ™˜์ž‘์—…(SWAP)์ด ์ž๋ฃŒ์˜ ์ด๋™์ž‘์—…(MOVE)๋ณด๋‹ค ๋” ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์—     
๋ฒ„๋ธ”์ •๋ ฌ์€ ๋‹จ์ˆœ์„ฑ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š์Œ

 

 

 

๋”๋ณด๊ธฐ

1. ์ปจํ…Œ์ด๋„ˆ

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

 

2. ๋„์ปค(Doker)

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ.
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌ, ๊ณต์œ , ๊ตฌ๋™ํ•˜๋Š” ์ž‘์—…์„ ์†์‰ฝ๊ฒŒ ํ•˜๋„๋ก ๋„์™€์คŒ
    - ์ด๋ฏธ์ง€ : ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์— ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ์„ค์ •๊ฐ’๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”๊ฒƒ

 

3. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes)

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

 

4. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค v1.20๋ถ€ํ„ฐ ๋„์ปค ์ง€์› ์ค‘๋‹จ(2020.12.08)

  • ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ํ†ต์‹ ์‹œ CRI๋ผ๋Š” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋„์ปค๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ
  • ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ๋„์ปค์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„์ปค์‹ฌ์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, v1.24๋ถ€ํ„ฐ ๋„์ปค์‹ฌ ๊ธฐ๋ณธ์ง€์›๋„ ์ค‘๋‹จ

  • ๋ฐฉ์•ˆ : ๋„์ปค์‹ฌ์„ ํ†ตํ•˜์ง€ ์•Š๊ณ , CRI๋ฅผ ์ค€์ˆ˜ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์„ ํƒ
    → ํฌ๋ฆฌ๋„์ปค๋“œ(cri-dockerd), containerd, CRI-O
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋Ÿฐํƒ€์ž„์—์„œ ๋„์ปค๋ฅผ ์ œ๊ฑฐํ•˜๋”๋ผ๋„ ๋„์ปค์—์„œ ๋งŒ๋“  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋“ฑ๋ก, ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅ






์ฐธ๊ณ ) https://www.samsungsds.com/kr/insights/220222_kubernetes1.html

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์•Œ์•„๋ณด๊ธฐ 1ํŽธ: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ์ปจํ…Œ์ด๋„ˆ, ๋„์ปค์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…

์š”์ฆ˜ IT ์ƒํƒœ๊ณ„์— ๊ด€์‹ฌ์ด ๋งŽ์œผ์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋“ค์–ด ๋ณด์…จ์„ ํ…๋ฐ์š”. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ๋Œ€ํ•ด ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ด€์‹ฌ์ด ๋†’์•„์ง€๊ณ  ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๋Œ€๊ธฐ์—…์—์„œ ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ

www.samsungsds.com

์ฐธ๊ณ ) https://captcha.tistory.com/46

 

Docker - ์ปจํ…Œ์ด๋„ˆ๋ž€? (Container)

์ปจํ…Œ์ด๋„ˆ(Container) Docker๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ๋Š” ๊ทธ ๋ฐฐ๊ฒฝ์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ž€ ํ˜ธ์ŠคํŠธ OS์ƒ์— ๋…ผ๋ฆฌ์ ์ธ ๊ตฌํš(์ปจํ…Œ์ด๋„ˆ)์„ ๋งŒ๋“ค๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘

captcha.tistory.com

์ฐธ๊ณ ) https://fastcampus.co.kr/story_article_kubernetes

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค, ๋„์ปค ์ง€์› ์ค‘๋‹จ! ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? | ํŒจ์ŠคํŠธ์บ ํผ์Šค

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๋„์ปค๋Š” ๊ณผ์—ฐ ๋ฌด์—‡์ด๊ณ  ๋‘˜์—๋Š” ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๋„์ปค ์ง€์›์„ ์ค‘๋‹จํ•œ ์ƒํ™ฉ์—๋Š” ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

fastcampus.co.kr

 

1.๋ฉ”์„ธ์ง€ ํ(Message Queue)

  • ๋ฉ”์„ธ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด(MOM)๋ฅผ ๊ตฌํ˜„ํ•œ ์‹œ์Šคํ…œ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ(ํ”„๋กœ์„ธ์Šค) ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ์‹œ์Šคํ…œ ๊ฐ„ Connector ์—ญํ• ์„ ํ•˜์—ฌ ๊ฒฐํ•ฉ์„ฑ์„ ๋‚ฎ์ถ”๊ณ  ์‹ค์‹œ๊ฐ„ ๋น„๋™๊ธฐ์‹ ๋ฐ์ดํ„ฐ ๊ตํ™˜
    → Producer : ๋ฉ”์„ธ์ง€๋ฅผ Queue์— ์ „์†กํ•˜๋Š” ๊ณณ
    → Consumer : Queue์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๊บผ๋‚ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ
    → Consuming : ๋ฉ”์„ธ์ง€๋ฅผ Queue์—์„œ ๊บผ๋‚ด๋Š” ๊ฒƒ


1-1. ๋ฉ”์„ธ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด(Message Oriented Middleware)

  • ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ๋ฐ์ดํ„ฐ(๋น„๋™๊ธฐ ๋ฉ”์„ธ์ง€) ํ†ต์‹ ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด
  • ์žฅ์  : ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ณด๊ด€ / ๋ผ์šฐํŒ… / ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์ 
    → ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ๋ฐ ์‹ ๋ขฐ์„ฑ ์ €ํ•˜
    → ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๊ณ , ๋น„์šฉ ๋ฐœ์ƒ
    → ๋งค์ปค๋‹ˆ์ฆ˜ ๋ถˆ์ผ์น˜(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ํ†ต์‹  : ๋™๊ธฐ / ๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜ ํ†ต์‹  : ๋น„๋™๊ธฐ)

1-2. ํ(Queue)

  • ์„ ์ž…์„ ์ถœ๋ฐฉ์‹(First In First Out)์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

 

 

2. ๋ฉ”์„ธ์ง€ํ ์‚ฌ์šฉ์˜ ์žฅ์ 

  • ๋น„๋™๊ธฐ(Asynchronous): Queue์— ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ.
  • ๋น„๋™์กฐ(Decoupling): Application๊ณผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ™•์žฅ์„ฑ(Scalable): ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„œ๋น„์Šค๋“ค์ด ํ์— ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ํƒ„๋ ฅ์„ฑ(Resilience): ์ผ๋ถ€์˜ ์‹คํŒจ๊ฐ€ ์ „์ฒด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
  • ๊ณผ์ž‰(Redundancy): ์‹คํŒจ์‹œ ์žฌ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ณด์ฆ(Guarantees) : ์ž‘์—…์ด ์ฒ˜๋ฆฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

3. ์‚ฌ์šฉ์ฒ˜

- ๋‹ค๋ฅธ ๊ณณ์˜ API๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ 
- ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋น„๋™๊ธฐ ํ†ต์‹ 
- ์ด๋ฉ”์ผ ๋ฐœ์†ก ๋ฐ ๋ฌธ์„œ ์—…๋กœ๋“œ
- ๋Œ€์šฉ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์น˜์ž‘์—…
- ์ฑ„ํŒ…์„œ๋น„์Šค

 

4. ์ข…๋ฅ˜

  • Kafka, RabbitMQ, ActiveMQ ๊ฐ€ ๋Œ€ํ‘œ์ . Amazon SQS, Amazon MQ ๋“ฑ์ด ์žˆ๋‹ค.
    → Kafka : ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งŽ์€ ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์— ์ ํ•ฉ
    → RabbitMQ, ActiveMQ : ์‹ ๋ขฐ์„ฑ์žˆ๋Š” ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ ํ•ฉ

 

4-1. Apache Kafka
- ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์š”๊ตฌํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ํ”ผ๋“œ์ฒ˜๋ฆฌ, ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ์งง์€ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•จ
- TCP ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ

4-2. RabbitMQ
- AMOT ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•ด๋†“์€ ํ”„๋กœ๊ทธ๋žจ
- ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๊ตฌ์„ฑ๊ฐ€๋Šฅ, ์ง๊ด€์ 

4-3. ActiveMQ
- ์ž๋ฐ”๋กœ ๋งŒ๋“  ์˜คํ”ˆ์†Œ์Šค ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค
- ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ํ”„๋กœํ† ์ฝœ ์ง€์›

 

 

์ฐธ๊ณ ) https://sorjfkrh5078.tistory.com/291

 

๋ฉ”์‹œ์ง€ ํ(Message Queue)๋ž€?

์ตœ๊ทผ ๋ฐฑ์—”๋“œ ์ง๋ฌด๋ฅผ ์ง€์›ํ•˜๋‹ค ๋ณด๋ฉด ์ž๊ฒฉ ์š”๊ฑด์ด๋‚˜ ์šฐ๋Œ€์‚ฌํ•ญ์— ๋ฉ”์‹œ์ง€ ํ(Message Queue)๋ผ๋Š” ์—ญ๋Ÿ‰์ด ์ ํ˜€์žˆ๋Š” ๊ฒƒ์„ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์‹œ์ง€ ํ, ๋ง ๊ทธ๋Œ€๋กœ ๋ฉ”์‹œ์ง€๋“ค์„ ํ๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์— ๋‹ด์•„์„œ ๊ด€

sorjfkrh5078.tistory.com



์ฐธ๊ณ ) https://steady-snail.tistory.com/165

 

๋ฉ”์‹œ์ง€ ํ(Message Queue / MQ)

๋ฉ”์‹œ์ง€ ํ(Message Queue ์ดํ•˜ MQ)๋ž€ ํ”„๋กœ์„ธ์Šค(ํ”„๋กœ๊ทธ๋žจ) ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๋ฐฉ๋ฒ• ์ค‘์— ํ•˜๋‚˜๋กœ ๋” ํฐ ๊ฐœ๋…์œผ๋กœ๋Š” MOM(Message Oriented Middleware : ๋ฉ”์‹œ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด ์ดํ•˜ MOM)๋ฅผ ์˜๋ฏธ

steady-snail.tistory.com

 

์ฐธ๊ณ ) https://programming-and-dt.tistory.com/entry/%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%81%90-%EC%A2%85%EB%A5%98Message-Queue-MQ

 

๋ฉ”์‹œ์ง€ ํ ์ข…๋ฅ˜(Message Queue / MQ)

๋ฉ”์‹œ์ง€ ํ(Message Queue ์ดํ•˜ MQ)๋ž€ ํ”„๋กœ์„ธ์Šค(ํ”„๋กœ๊ทธ๋žจ) ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๋ฐฉ๋ฒ• ์ค‘์— ํ•˜๋‚˜๋กœ ๋” ํฐ ๊ฐœ๋…์œผ๋กœ๋Š” MOM(Message Oriented Middleware : ๋ฉ”์‹œ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด ์ดํ•˜ MOM)๋ฅผ ์˜๋ฏธ

programming-and-dt.tistory.com


์ฐธ๊ณ ) https://pamyferret.tistory.com/38

 

Message Queue๋ž€? (AMQP์— ๊ธฐ๋ฐ˜ํ•œ ๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์‹ ๋ฐ ์šฉ์–ด)

ํšŒ์‚ฌ๋ฅผ ์ด์งํ•˜๊ณ ๋‚˜๋‹ˆ๊นŒ ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ๊ณ ๋ คํ•ด์„œ Message Queue์— ๋ฉ”์‹œ์ง€๋ฅผ ๋„ฃ๊ณ  ์ปจ์Šˆ๋ฐํ•ด์„œ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ ์„œ ์„œ๋น„์Šคํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. (์ „์— ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋ผ๊ณ  ์ž‘์„ฑํ–ˆ์ง€๋งŒ ๋น„๋™๊ธฐ๋Š” ๋น„๋™๊ธฐ

pamyferret.tistory.com

 

1. ํ”„๋ ˆ์ž„์›Œํฌ(Framework)

  • ์›ํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์ง‘์ค‘ํ•ด ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ์ •ํ•œ ํ˜•ํƒœ์™€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š” ๊ณจ๊ฒฉ์„ ์˜๋ฏธ
  • ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์ฒด์ ์ธ ๋ถ€๋ถ„์— ํ•ด๋‹นํ•˜๋Š” ์„ค๊ณ„์™€ ๊ตฌํ˜„์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ˜‘์—…ํ™”๋œ ํด๋ž˜์Šค๋“ค์„ ์ œ๊ณต
  • ์•ฑ/์„œ๋ฒ„ ๋“ฑ์˜ ๊ตฌ๋™, ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ, ์ด๋ฒคํŠธ๋ฃจํ”„ ๋“ฑ ๊ณตํ†ต๋œ ๋ถ€๋ถ„์„ ๊ด€๋ฆฌ


1-1. ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์žฅ์ 

  • ํš์ผํ™”
  • ํ™•์žฅ์„ฑ ์šฐ์ˆ˜, ๋†’์€ ์™„์„ฑ๋„
  • ์•ˆ์ •์  ์œ ์ง€๋ณด์ˆ˜


1-2. ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋‹จ์ 

  • ์ฝ”๋“œ์Šต๋“์„ ์œ„ํ•œ ํ•™์Šต์‹œ๊ฐ„ ํ•„์š”
  • ์œ ์—ฐํ•œ ๊ฐœ๋ฐœ์ด ์–ด๋ ค์›€
  • ํ”„๋กœ์ ํŠธ ์šฉ๋Ÿ‰ ์ฆ๊ฐ€


1-3. ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ข…๋ฅ˜

  • ๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ : Spring(์ž๋ฐ”), Django(ํŒŒ์ด์ฌ), Rails(๋ฃจ๋น„), Express(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ)
  • ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ : Angular, React, Vue ( → ๋ชจ๋‘ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜)

 

2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)

  • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์‹œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์„ฑ์š”์†Œ๋กœ์„œ, ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋“ˆํ™”ํ•œ ๊ฒƒ
    → ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ˆ˜ํ–‰, ๋””๋ฒ„๊น…, ์„ฑ๋Šฅ์ธก์ •์„ ์œ„ํ•œ API
    → ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ

2-1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜ˆ์‹œ
Java : java.lang, java.utill, java,io, java.net, java.text, java.sql ๋“ฑ
Javascript : jQuery, DOM, AJAX, Date ๋“ฑ

 

 

3. ํ”„๋ ˆ์ž„์›Œํฌ vs ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๊ตฌ๋ถ„ ํ”„๋ ˆ์ž„์›Œํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
๊ณตํ†ต์  ๊ฐœ๋ฐœ์†๋„ ํ–ฅ์ƒ
์ฐจ์ด์  ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ์–ด(์ œ์–ด์˜ ๋ฐ˜์ „) ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ œ์–ด๊ถŒ
ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉ

 









์ฐธ๊ณ ) https://moolgogiheart.tistory.com/87

 

ํ”„๋ ˆ์ž„์›Œํฌ(Framework)๋ž€? ๊ฐœ๋…, ์žฅ๋‹จ์ , ์ข…๋ฅ˜

ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๊ฐœ๋…์„ ์ ‘ํ•˜๊ธฐ ์ „์— '๋ถ€ํŠธ์ŠคํŠธ๋žฉ(Bootstrap)'์ด๋ž€ ์šฉ์–ด๋ฅผ ๋จผ์ € ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ์ข‹์€ ํˆด์ด๋ผ๋Š” ๊ฒƒ์„ ๋“ฃ๊ฒŒ ๋˜์—ˆ์ฃ .๊ทธ๋ž˜์„œ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์ด ๋ฌด์—‡์ธ์ง€ ์ž

moolgogiheart.tistory.com


์ฐธ๊ณ ) https://cocoon1787.tistory.com/745

 

[๊ฐœ๋ฐœ์ƒ์‹] ํ”„๋ ˆ์ž„์›Œํฌ(Framework) ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library)์˜ ์ฐจ์ด

๐Ÿš€ "ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด๋ฅผ ์•„์‹œ๋‚˜์š”?"" "์Œ... ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ผˆ๋Œ€์ด๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋“ˆ ๊ฐ™์€ ๊ฒƒ์ด๊ณ ....๐Ÿ˜ฐ" "๊ทธ๋Ÿผ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜์‹  ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”." "... ex

cocoon1787.tistory.com

 

+ Recent posts