Software Development
-
[Spark] 튜닝, 디버깅, 그리고 개발자가 신경 쓰지 않는 것들Software Development/Big Data 2021. 3. 28. 20:00
스파크 튜닝과 클러스터 사이징 대부분의 스파크 세팅은 애플리케이션 수준에서만 조정이 가능하다. 이러한 세팅들은 작업 속도와 완료 여부에 큰 영향을 끼친다. 스파크의 기본 세팅은 작은 크기의 클러스터에서도 동작할 수 있도록 맞춰진 것이며 실제 업무용으로는 추천하지 않는다. 세팅들은 가용한 자원의 활용성을 높이고 작업을 완료할 수 있는 수준의 최적화를 위해 자주 변경될 것이다. 스파크는 환경 설정을 위해 여러 가지의 제어 항목을 제공하는데, 익스큐터의 메모리 부족 오류가 스파크 작업이 실패하는 일반적인 이유 중의 하나이다. 물론 데이터가 편향적이거나 셔플을 줄이는 등의 기술적인 부분에 집중하는 것이 최선이기는 하나, 메모리가 큰 익스큐터를 더 적게 쓰는 것이 실패를 막아 주기도 한다. 스파크 잡의 설정을 선..
-
[Spark] 효율적인 트랜스포메이션Software Development/Big Data 2021. 2. 14. 19:52
효율적인 트랜스포메이션 스파크 성능의 상당 부분은 데이터 변형 능력, RDD를 반환하는 연산에서 나온다. 좁은 트랜스포메이션 vs. 넓은 트랜스포메이션 트랜스포메이션이 넓은지 혹은 좁은지 어떻게 구분하는지, 이 구분 기준이 왜 평가와 성능에 영향을 끼치는지 알아본다. 넓은 트랜스포메이션 -> 셔플 요구, 좁은 트랜스포메이션 -> 셔플 요구 X 좁은 종속성의 트랜스포메이션: 부모 RDD의 각 파티션이 자식 RDD의 최대 하나의 파티션에 의해 사용되는 것[1] 자식 RDD의 종속성에 따라 좁고 넓은 종속성을 정의(2장) vs 부모 RDD의 종속성 위주로 좁고 넓은 종속성을 정의[1] 스파크 평가 엔진(DAG): 출력(액션) -> 입력 RDD로 실행 계획을 역으로 구축 좁은 종속성: 부모파티션은 오직 하나, ..
-
[Spring] JPASoftware Development/Java 2021. 1. 1. 01:21
웹 애플리케이션 개발에서 데이터베이스를 떼어놓고 이야기를 할 수 없습니다. 중요한 만큼 웹 애플리케이션 개발자들은 데이터베이스 관련 로직을 처리하는데 오랜 시간을 할애했습니다. 그렇지만 이 로직에는 반복되는 코드가 많았고 이 때문에 데이터베이스와 관련된 개발의 생산성이 떨어지자 이 문제를 해결하기 위한 프레임워크가 발전하기 시작했습니다. JDBC를 직접 사용하는 방식부터 마이바티스와 같은 SQL Mapper 프레임워크를 사용하는 방법까지 다양한 대안이 제시되었습니다. 이러한 프레임워크는 공통적으로 SQL을 쉽게 사용하는 데 초점을 맞추고 있습니다. 스프링 데이터 JPA 스프링 데이터 JPA는 JPA를 스프링에서 쉽게 사용할 수 있도록 도와주는 프레임워크로 내부적으로 하이버네이트를 이용해서 기능을 구현하고..
-
[Spring] RESTful 이해하기Software Development/Java 2020. 12. 26. 22:18
웹, 서버 개발자의 필수 요건이 REST API 개발 경험입니다. REST API가 무엇인지 살펴보겠습니다. REST란? REST란 REpresentational State Transfer의 약자로, HTTP의 창시자 중 한 사람인 로이 필딩이 2000년에 발표한 박사 학위 논문에서 소개했습니다. 저자는 기존의 웹 아키텍처가 HTTP 본래의 우수성을 잘 활용하지 못한다고 생각했기 때문에 그 장점을 최대한 활용할 수 있는 아키텍처로 REST를 소개했습니다. REST는 HTTP URI로 리소스를 정의하고 HTTP 메서드로 리소스에 대한 행위를 정의합니다. 리소스는 JSON, XML과 같은 여러 가지 언어로 표현할 수 있습니다. REST의 특징을 지키는 API를 'RESTful하다'라고 표현합니다. 리소스 리..
-
[Spring] AOP 사용하기Software Development/Java 2020. 12. 20. 20:16
스프링 프레임워크를 이야기할 때 빠지지 않고 등장하는 단어 중 하나가 AOP입니다. AOP는 IoC 그리고 DI와 함께 스프링 프레임워크에서 중요한 내용입니다. AOP는 Aspect Oriented Programming의 약자로 관점지향 프로그래밍이라고 합니다. AOP란? 스프링의 여러 가지 장점 및 특징을 이야기할 때 빠지지 않고 등장하는 것이 바로 AOP입니다. AOP를 OOP를 대체하는 개념으로 오해하기도 합니다. AOP는 OOP를 더욱 OOP답게 사용하도록 도와 주는 개념으로 AOP를 이해하기 위해서는 우선 OOP의 이해가 필요합니다. 따라서 OOP에 대해서 먼저 이야기 하겠습니다. 객체지향이란 관심사가 같은 기능과 데이터를 모아서 재사용이 가능한 객체로 캡슐화하는 것을 의미합니다. 객체지향 개념..
-
[Spring] 인터셉터 사용하기Software Development/Java 2020. 12. 20. 02:06
스프링의 인터셉터는 어떠한 URI를 호출했을 때 해당 요청의 컨트롤러가 처리되기 전 또는 후에 작업을 하기 위해서 사용됩니다. 이러한 역할은 필터와 인터셉터로 수행할 수 있습니다. 기능적인 면에서는 필터와 인터셉터가 상당히 비슷해 보입니다. 필터로 할 수 있는 일을 인터셉터로 할 수 있고 반대로 인터셉터로 할 수 있는 일을 필터로도 할 수 있습니다. 그렇다면 이 둘의 차이는 무엇일까요? 다음 그림은 스프링 MVC 요청의 라이프사이클을 보여줍니다. 필터와 인터셉터의 차이점은 다음과 같습니다. * 필터는 디스패처 서블릿 앞 단에서 동작하지만 인터셉터는 디스패처 서블릿에서 컨트롤러로 가기 전에 동작합니다. * 필터는 J2EE 표준 스펙에 있는 서블릿의 기능 중 일부이지만 인터셉터는 스프링 프레임워크에서 제공되..
-
[Spring] Logback 알아보기Software Development/Java 2020. 12. 19. 20:06
프로그램은 다양한 로그를 남기게 됩니다. 이런 로그는 시스템의 로그 파일에 남기 때문에 사용자가 직접 볼 수는 없습니다. 그렇지만 이러한 시스템의 로그는 프로그램의 개발 및 유지보수, 에러확인 등 애플리케이션 전반에 걸쳐 사용됩니다. 스프링 부트도 다양한 로그 프레임워크를 쉽게 적용할 수 있도록 지원합니다. Logback이란? 몇 년 전까지 자바 프로젝트에서 가장 많이 사용되는 로그 라이브러리는 Log4j였습니다. 지금은 개발이 종료됐지만 Log4j는 자바의 예외를 처리하기 위해 시작된 프로젝트입니다. Log4j 개발자들이 Log4j를 토대로 Logback을 만들게 되었습니다. Logback은 다음과 같은 장점을 가지고 있습니다. * 오랫동안 널리 사용되고 검증된 Log4j를 기반으로 다시 작성되었습니다..
-
[Spring] 스프링 프레임워크 이해하기Software Development/Java 2020. 12. 15. 20:17
스프링 프레임워크 및 MVC 패턴에 대해서 간단히 알아보겠습니다. 스프링 프레임워크란? 웹 애플리케이션 개발을 위한 다양한 프레임워크가 존재하지만 가장 많이 사용되고 있는 프레임워크를 하나 꼽자면 스프링 MVC 프레임워크를 들 수 있습니다. 스프링 프레임워크는 일반적인 사용자를 위한 웹 애플리케이션부터 기업 환경의 애플리케이션까지 다양한 범위에서 사용되는 프레임워크입니다. 또한 우리나라에서는 전자 정부 표준 프레임워크로 채택되면서 자바 개발자들이 알아야 할 사실상 표준이 되었습니다. 프로젝트 이름 설명 스프링 프레임워크 현대 자바 기반의 애플리케이션을 개발하는 데 기반이 되는 프레임워크. 스프링의 핵심은 애플리케이션의 기반을 제공함으로써 개발자들은 애플리케이션의 비즈니스 로직 개발에만 집중할 수 있게 하..