자바 프로그래머

자바 프로그래머를 위한 함수형 프로그래밍, 정말 향후 대세가 될까?

#JAVA #자바 함수형 프로그래밍 #자바 함수형


JAVA를 효율적이고 유연하게 활용하는 함수형 프로그래밍. 단순한 점이 장점이며, 객체 지향 패러다임의 대세를 이을 대안으로 주목받고 있죠. 함수로 이루어져 있으며, mutable data나 변화로부터 부작용을 피하는 프로그래밍 방법론이기 때문인데요.

이미 미국 실리콘밸리 내 JAVA를 사용하는 회사에서는 함수형 프로그래밍과 JAVA 8에 새롭게 추가된 JAVA Stream을 모두 활용하고 있다는 사실, 알고 계셨나요?


함수형 프로그래밍과 JAVA Stream이 향후에는 자바 프로그래머들 사이에서 정말 대세가 될지 실리콘밸리에 있는 링크드인에서 근무하고 있는 이승환님을 만나 이야기를 나눠보았습니다.

데이터 엔지니어링

Q1. "안녕하세요. 먼저 간단하게 자기소개 부탁 드리겠습니다."

안녕하세요. 저는 현재 LinkedIn 본사에서 Senior software Engineer로 일하고 있는 이승환이라고 합니다.
이전에는 MicroSoft의 Software Engineer로 근무했습니다.

Q2."지금 하고 있는 일을 간략하게 말씀 해 주실 수 있을까요?"

링크드인 커머스팀에서 일하다가 요즘은 B2B 어플리케이션 백엔드 개발자로 일을 하는데요. 백엔드 프로그래밍을 하다보면 대량의 자료를 효율적으로 처리해야 할 상황을 자주 마주칩니다.
이런 상황에 JAVA Stream이라는 도구를 사용하고 있고요. 또, 함수형 프로그래밍을 이용한 다양한 디자인 패턴 역시 자주 마주치게 됩니다.

Q3. "함수형 프로그래밍과 JAVA Stream에 대해 말씀 주셨는데, 관련하여 설명 해 주실 수 있을까요?"

JAVA Stream은 2014년에 발표된 JAVA 버전인 JAVA 8에서 새로 추가된 기능인데요. JAVA 8의 핵심은 함수형 프로그래밍이라는 최신 패러다임을 JAVA 8에 접목하는 것이에요.

그래서 함수형 프로그래밍을 기반으로 JAVA Stream을 활용할 수 있죠. JAVA Stream은 배열과 컬렉션을 함수형으로 처리하고, 병렬 처리 또한 가능합니다. 하나의 작업을 둘 이상의 작업으로 잘게 나누어 동시에 진행하는 병렬처리는 많은 요소들을 빠르게 처리할 수 있어요. 자바 프로그래머들이 함수형 프로그래밍을 활용하면 루프를 돌리는 대신 단 한줄의 코드로도 대체가 가능합니다.
이렇게 코드를 작성하면 보기에도 좋고, 가독성이 좋아지죠. 그리고 관리도 쉽고 당연히 버그도 줄어들고요.

LinkedIn은 2016년에 30조원이라는 큰 금액에 마이크로소프트에 인수된 프로페셔널 SNS입니다. 격변하는 시장 속에서 빠르게 프로덕트를 변화시키고 업그레이드 시켜온 New Product Development 전략을 통해 LinkedIn은 급속도로 성장할 수 있었습니다. 그리고 그 이면에는 자바를 효율적이고 유연하게 활용하는 함수형 프로그래밍이 큰 역할을 하고 있죠.

링크드인의 모든 엔지니어들은 JAVA Stream을 매일 밥먹듯이 사용해요. 필수적인 부분이기 때문이죠. JAVA Stream은 컬렉션에서 원하는 값을 얻기 위해서 for문 도배하는 것을 막으려고 나왔는데요. 불필요한 코딩(for, if문법)을 지우고 직관적으로 보여주므로, 코드의 양이 줄어들고 간결하게 표현할 수 있어요.

우리가 책을 읽으면서 아름다운 글귀에 감동을 느끼는 것과 같이, 저와 제 주변 개발자들은 아름답게 쓰여진 코드를 보면 서로 보여주고는 하는데요. 이런 코드들은 대부분 함수형 프로그래밍과 스트림을 사용해서 최적화가 되어 있는 경우가 많아요. 경력이 오래된 자바 프로그래머들도 함수형 프로그래밍에 대한 이해도가 얕아 비효율적인 코드를 쓰는 경우도 있는데요. 이런 경우의 수를 줄일 수 있는 방법이 바로 JAVA Stream이라고 생각해요.

Q4. "실리콘밸리에서는 이미 함수형 프로그래밍과 JAVA Stream을 모두 활용하고 있다고 들었는데요. 사실인가요?"

네, 실제로 실리콘밸리에서는 함수형 프로그래밍과 JAVA Stream을 활용하지 않는 회사를 찾기가 어렵습니다.
제가 깜짝 놀란 점은 우리나라 자바 프로그래머들이 아주 우수한데도 불구하고 예상외로 함수형 프로그래밍이나 스트림을 별로 쓰지 않는다는 점이었어요. 실리콘밸리에서는 이 둘을 모르면 자바 개발자로 일을 할 수도 없는데 말이죠.

Q5. "그렇다면 어떤분들이 JAVA Stream에 대해서 알면 도움이 될까요?"

자바에 대한 기본적인 데이터 구조에 대해서 알고있고, 자바를 배우고 싶은 누구나 JAVA Stream에 대해 배우면 좋습니다. 자바를 사용하면서 코드를 잘 쓰고 싶은 분이라면 누 구에게나 추천 드립니다. 과언이라 할 수도 있겠지만 JAVA Stream을 할 수 없다면 실리콘밸리에서는 단 하루도 자바 개발자로 일을 할 수가 없다고 생각합니다.

흔히들 자바 함수형 프로그래밍과 JAVA Stream을 문법으로만 배우면 금방 알 수 있을 것이라고 생각하는데요.실제 사용하는데 금방 한계에 다 다르게 됩니다.
실제 SNS 기업들에서 사용하는 코드를 통해 회원관리, 거래관리 등 실 예제로 실습 해보면 Stream의 기본과 연결, 가공, 매핑, 필터링 및 병렬 처리 등을 마스터 할 수 있습니다.


지금 패캐머들이 읽고있는 BEST 아티클이 궁금하다면

이 글과 연관된 주제의 추천 강의