Coarse fine 차이 - Coarse fine chai

코(장음)스 그레인드(coarse-grained)와 파인 그레인드(fine-grained)는 우리말 한마디로 옮기기에는 무척 버거운 개념이다. grain은 원래 보리나 밀 같은 곡식을 낟알로 만드는 작업이나 표면을 우둘투둘하게 하는 일을 뜻 하는데, 그때아주 곱고 섬세하게 하느냐, 아니면 듬성 듬성 크게 하느냐에 따라 fine와 coarse라 는형용사를 붙인다. 이것이 소프트웨어공학에 도입되어 어떠한 프로세스를 아주 잘게 쪼개느냐 아니면 굵게 쪼개서 뭉뚱그려 놓느냐를 표현할 때 쓰게 되었다. 웹서비스에서의서비스라는 단위에 비해 상대적으로 자바의 메소드는 더 세분화되어있다는 뜻에서 코스그레인드 서비스-파인그레인드 메소드라는 대칭이 생겼다고 봐도 좋다.

- 출처 http://kwon37xi.egloos.com/1419790 (1차 출처 한빛 미디어 자 바 웹 서비스 PDF)

간단하게 말해

잘게 세밀하게 쪼개면 fine-grained
대충 듬성듬성 쪼개면 coarse-grained

댓글을 달아 주세요

Spark관련 논문 Resilient Distributed Datasets 을 읽던 중 coarse-grained 와 fine-grained 의 내용이 있어서 간단히 정리를 해본다.

영어를 사용하는 문화권에서는 확실히 이해가 쉬울 듯 한데..

grain은 곡식을 하나하나의 낱알로 만드는 작업을 의미한다. 이 작업을 듬성듬성 크게 할지, 아니면 곱고 가늘게 할지에 따라서 coares와 fine으로 표현한다.

이를 소프트웨어 공학에서는 하나의 프로세스를 쪼개는 정도에 따라서 구분하는 정도로 사용한다.

1. Fine-Grained

잘게 쪼개는 것으로 예를 들면 다음과 같다.

타행이체의 경우 당행잔액조회 => 타행입금계좌 확인 => 타행으로송금 단계로 나눌 수 있고 이를 각각 메소드로 구성할 수 있다. 또한 이 기능들이 다양하게 활용된다면 메소드를 모아서 하나의 모듈로 만들 수 도 있어서 변경이 발생했을 때 보다 유연하게 개발할 수 있는 장점이 있다. 또한 유사하지만 다른 새로운 비지니스가 만들어 질 때 재사용을 통해서 보다 빠르게 구현할 수 있다.즉, Flexible System상에서 유용하다.

2. Coarse-Grained

덩어리로 작업한다.

타행이체의 경우 그냥 "타행이체" 하나 만들어서 사용한다. 일반적으로 EnterpriseApplicationDesign에서는 선호하지 않는 방식이지만 Distributed System상에서 유용하다.

그동안은 Java기반의 EnterpiseApplication을 주로 수행했기 때문에 1번이 많이 친숙하지만, 앞으로는 BigData를 위한 병렬처리쪽으로 구현이 필요한 경우(Spark,Akka등..) 가 생길 것 같아서 2번으로의 전환이 필요할 것 같다.

정리 및 첨언

최근 프로그래밍의 추세도 함수형 프로그래밍이라고 하는데 객체지향과 상반된다고 오해하는 경우가 있다. 

함수형 프로그래밍 = 순차적 프로그래밍 으로 보는 것은 옳지 않다.

내 생각에는 함수형 프로그래밍이라는 것은 수학적함수와 비슷한 개념으로 closure전달이 가능하다는 개념으로 보는 것이 더 낫지 않나 싶다. 대표적인 예를 scala로 볼 수 있다.

RDD논문을 보면 transformation에 대한 설명들이 나오는데 수학개념을 통해서 표현하면 매우 쉽게 이해할 수 있다. (ex, Map(a) => b ) 

Spark구현을 Scala로 한 것은 그 때문이 아닐까 혼자 생각해본다.

이 글은 제가 공부한 것을 정리한 글입니다. 잘못된 내용이 있다면 댓글로 지적 부탁드립니다. 감사합니다.

Coarse-grained classification 과 Fine-grained classification 의 차이

Coarse-grained 의 사전적 정의는 "결이 거친", "조잡한" 입니다. 곡식을 낱알로 분리하는 작업을 "grain" 이라고 할 수 있는데, 이를 거칠고 큼직큼직하게 할지, 곱고 세밀하게 할지에 따라서 Coarse 와 Fine 으로 나누어 표현한다고 이해할 수 있습니다.

Coarse-grained classification

Coarse-grained classification 은 Cifar10, Cifar100, MNIST 등의 데이터셋을 사용해 classification 하는 것이 Coarse-grained classification 의 예시입니다.

Fine-grained classification

Fine-grained classification 은 Coarse-grained classification 보다 더 세밀하게 classification 을 한다고 이해할 수 있습니다. Stanford dogs 가 가장 유명한 Fine-grained classification dataset 인데, 아래 이미지를 보시면

이미지 출처 [1]

"개" 라는 동물종 안에서 더 세세하게 "개의 품종"을 classification 하기 위한 데이터셋임을 알 수 있습니다. Fine-grained classification 은 Coarse-grained classification 보다 상대적으로 비슷한 특징을 가진 classs 들을 분류하는 것이라고 이해할 수 있습니다.

[1]: https://towardsdatascience.com/dog-breed-classification-hands-on-approach-b5e4f88c333e

TAG : classfication, coarse grained class, coarse grained classification, coarse-grained, coarse-grained class, coarse-grained classification, deep learning, fine grained, fine grained class, fine grained classification, fine-grained, fine-grained class, fine-grained classification, stanford dogs, 딥러닝

EJB 책을 보는 도중에 또 막혔다.

대체 coarse-grained는 뭐고 fine-grained는 뭔가? 물론 영어 사전적인 의미야 별거 아니다.
하지만 EJB에서의 의미는 뭐란말인가? 글쓴이야.. 어려운 말이 나오면 좀 설명좀 해주던지 어디서 찾아보라고 해줘... --;


역자주: 코(장음)스 그레인드(coarse-grained)파인 그레인드(fine-grained)는 우리말 한마디로 옮기기에는 무척 버거운 개념이다. grain은 원래 보리나 밀 같은 곡식을 낟알로 만드는 작업이나 표면을 우둘투둘하게 하는 일을 뜻 하는데, 그때아주 곱고 섬세하게 하느냐, 아니면 듬성 듬성 크게 하느냐에 따라 fine와 coarse라 는형용사를 붙인다. 이것이 소프트웨어공학에 도입되어 어떠한 프로세스를 아주 잘게 쪼개느냐 아니면 굵게 쪼개서 뭉뚱그려 놓느냐를 표현할 때 쓰게 되었다. 웹서비스에서의서비스라는 단위에 비해 상대적으로 자바의 메소드는 더 세분화되어있다는 뜻에서 코스그레인드 서비스-파인그레인드 메소드라는 대칭이 생겼다고 봐도 좋다.

   - 한빛 미디어 자바 웹 서비스 PDF

자 좋다. 저 번역자는 참 충실하다. (저 책 이미 봤는데 까먹고 있었다. 역시 내 IQ는... --;)

암튼, 저걸 내 맘대로 해석해보자면 coarse-grained는 내가 내 동생에게 "야 집안 청소해!"하는 거고, fine-grained는 "야! 설겆이 해! 설겆이 다했어? 그럼 빨래해! 빨래 다했어? 그럼 방 쓸어! 방 다 쓸었어? ....."

뭐 이정도라 이거지?

포스트 메타 정보


우노

검색하기 Search

우노

글목록 방명록 About


  • 분류 전체보기 (581)
    Coarse fine 차이 - Coarse fine chai
    • AI (99)
      • Machine Learning (48)
      • Deep Learning (49)
    • Bigdata (61)
      • Spark (43)
      • Graph & Matrix (7)
      • Hadoop (2)
      • MapReduce (1)
      • Recommender System (6)
      • Natural Language Processing (1)
      • Data Mining (1)
    • AWS (40)
      • CLI (7)
      • EC2 (8)
      • EMR (8)
      • Route 53 (2)
      • S3 (1)
      • API Gateway (2)
      • Lambda (6)
      • ECS (1)
      • DocumentDB (2)
      • RDS (1)
      • Policy (2)
    • Container (22)
      • Docker (14)
      • Kubernetes (8)
    • Operating System (56)
      • Concept (3)
      • Linux & Ubuntu (35)
      • MacOS (6)
      • Shell Script (12)
    • Network (8)
      • Concept (7)
      • Develop (1)
    • Software Engineering (10)
    • Database (12)
      • Concept (0)
      • MongoDB (12)
    • Hardware (9)
      • Concept (5)
      • NVIDIA (3)
      • Coral (1)
    • Language (117)
      • R (9)
      • C++ (19)
      • Python (71)
      • Scala (12)
      • Java (6)
    • Web (6)
      • Concept (0)
      • Develop (6)
    • Graphic (2)
    • GitHub (11)
    • Paper (2)
    • Etc (3)
      • Excel (2)
      • Etc (1)
    • Job (1)
      • CS Tech Interview (1)
    • Data Structure (2)
    • Algorithm (118)
      Coarse fine 차이 - Coarse fine chai
      • Concept (18)
      • Greedy (18)
      • Implementation (14)
        Coarse fine 차이 - Coarse fine chai
      • DFS (6)
      • BFS (9)
      • Sort (8)
      • Binary Search (7)
      • Linear Search (0)
      • Dynamic Programming (14)
        Coarse fine 차이 - Coarse fine chai
      • Shortest Path (7)
      • Graph (8)
      • String (1)
      • Backtracking (1)
      • Flood-Fill (2)
      • Maximum Flow (1)
      • Divide and Conquer (1)
      • Prime Number (1)
      • Kakao (2)

Guestbook

오늘의 인기 글

  • [Implementation] 이코테⋯
  • [DFS] 이코테 “연산자 끼⋯
  • [BFS] 이코테 “인구 이동⋯

최근 글

  • [DP] 백준 11726번 “2xn⋯
  • [Implementation] 백준 19⋯
  • [Implementation] 백준 12⋯

최근 댓글

  • 안녕하세요. 포스팅 잘 보았⋯
  • 해당 문제를 확인할 수 없는⋯
  • 코드러너에서 run in termina⋯
  • 중요한 포인트를 잘 집어서⋯
  • 감사합니다 :)
  • 지렸다...
  • 넵 :)
  • 도움이 정말 많이 되었습니다⋯
  • 일반적으로, 사용하려는 Deci⋯
  • 설명 너무 잘해주셔서 감사합⋯
  • 수정했습니다. 감사합니다 :)
  • 좋은자료 감사합니다. 그런데⋯

Today1,996Total918,983

10-11 15:34

관리 메뉴

  • 글쓰기
  • 방명록
  • RSS
  • 관리

우노

Software Engineering

[프로그래밍용어] Fine-Grained 와 Coarse-Grained

우노 2021. 7. 27. 22:49

반응형

Fine-Grained

  • 하나의 작업을 작은 단위의 프로세스로 나눈 뒤,
  • 다수의 호출을 통해, 작업 결과를 생성해내는 방식
    • 예를 들어, Do() 라는 함수가 있다면
    • 해당 함수를 First_Do(), Second_Do() 로 나누어 작업 결과를 생성해내는 방식
  • 따라서, 다양한 "Flexible System" 상에서 유용하게 쓰일 수 있음

Coarse-Grained

  • 하나의 작업을 큰 단위의 프로세스로 나눈 뒤,
  • "Single Call" 을 통해, 작업 결과를 생성해내는 방식
    • 예를 들어, Do() 라는 함수가 있다면
    • 단순히, Do() 를 호출해 작업 결과를 생성해내는 방식
  • 따라서, "Distributed System" 상에서 유용하게 쓰일 수 있음

참고

  • https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dontcryme&logNo=30124306779

반응형

'Software Engineering' 카테고리의 다른 글

[주요 개념] Stateful 과 Stateless  (3) 2021.10.12
[Software Engineering] 런타임이란?  (0) 2021.09.30
[Software Engineering] 절차적 vs 객체지향 vs 함수형  (6) 2021.03.31
[프로그래밍용어] 매개변수와 인자의 차이점  (0) 2021.03.11
[프로그래밍용어] 직렬화(serialized), 역직렬화(deserialized)  (0) 2020.07.13

'Software Engineering' Related Articles

  • [주요 개념] Stateful 과 Stateless 2021.10.12
  • [Software Engineering] 런타임이란? 2021.09.30
  • [Software Engineering] 절차적 vs 객체지향 vs 함수형 2021.03.31
  • [프로그래밍용어] 매개변수와 인자의 차이점 2021.03.11

more

0 Comments

댓글쓰기 폼

이름 비밀번호

Secret

내용

Prev 1 ··· 262 263 264 265 266 267 268 269 270 ··· 581 Next


Blog is powered by kakao / Designed by Tistory