Coarse grain 뜻 - Coarse grain tteus

Coarse grain 뜻 - Coarse grain tteus
coarse-grained와 fine-grained의 차이

코스 그레인드와 파인 그레인드는 우리말 한마디로 옮기기에는 무척 버거운 개념이다. Grain은 원래 보리나 밀 같은 곡식을 낟알로 만드는 작업이나 표면을 우둘투둘하게 하는 일을 뜻하는 데 그때 아주 곱고 섬세하게 하느냐, 아니면 듬성듬성 크게 하느냐에 따라 Fine와 Coarse라는 형용사를 붙인다. 이것에 소프트웨어 공학에 도입되어 어떤 프로세스를 잘 게 쪼개느냐 아니면 굵게 쪼개서 뭉뚱그려 놓느냐를 표현할 때 쓰게 되었다.

◆ 책 "모던 C++ 입문" 에서 ◆

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로 한 것은 그 때문이 아닐까 혼자 생각해본다.

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

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


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

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

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

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

뭐 이정도라 이거지?

포스트 메타 정보


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

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, 딥러닝

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

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

간단하게 말해

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

댓글을 달아 주세요