전체 글 192

[Spring Batch] 4장 : 잡 설정 및 실행(Configuring and Running a Job) 1

지난 시간에는 Spring Batch의 도메인들에 대해 읽어보았다. (지난 내용이 궁금하면 여기 클릭!) 지난 내용은 spring batch에서 사용되는 domain들에 대해 설명했고 실제로 어떻게 사용하는지에 대한 설명은 없었기에 좀 재미없었을 수 있다. (맞아 쌉노잼이야 에잉 퉤텟!) 이번 시간에는 잡을 설정하고 실행하는 방법에 대해 읽어볼 것이다. domain section에서 전반적인 아키텍처 디자인을 다음 그림을 사용해서 논의했다. Job 객체가 Step을 위한 간단한 컨테이너처럼 보이지만 많은 설정 옵션을 알아야 한다. 더욱이, 어떻게 Job이 작동할 수 있고 어떻게 그 메타데이터가 실행동안 저장될 수 있는지에 대한 많은 옵션을 고려해야한다. 이 챕터는 다양한 설정 옵션과 Job의 런타임 관심..

Spring/Spring Batch 2023.11.23

[Spring Batch] 3장 : 배치의 도메인 언어(The Domain Language of Batch) 2 (Step, StepExecution, ExecutionContext, Job Repository / Launcher, ItemReader / Writer)

지난 시간에 배치의 도메인 언어중 Job, JobInstance, JobParameter, JobExecution에 대해 알아보았다. (지난 내용을 보고 싶다면 여기 클릭!) 저번에 내용이 너무 길었던 관계로 끊은 부분에서 이어서 Step부터 다시 읽을 것이다. 1. Step Step은 한 배치 잡(batch job)의 독립적이고 연속적인 단계를 캡슐화한 하나의 도매인 객체이다. 그러므로 모든 job은 하나 혹은 더 많은 Step들로 구성되있다. Step은 실제 배치 처리를 정의하고 제어하는에 필요한 모든 정보를 포함한다. 이것은 어쩔수없이 모호한 묘사인데(?) 아무 Step의 내용들이 Job을 사용하는 개발자의 재량에 달렸기 때문이다. Step은 개발자의 요구사항에 따라 간단하거나 복잡할 수도 있다. ..

Spring/Spring Batch 2023.11.21

[Spring Batch] 3장 : 배치의 도메인 언어(The Domain Language of Batch) 1 (Job, JobInstance, JobParameter, JobExecution)

지난 시간에 Spring Batch Architecture, Spring Batch Principles and Guidelines 그리고 Spring Processing Strategies 와 약간의 지식들에 대해 보았다. (지난 내용을 보고 싶다면 여기 클릭!) 너무 전략 부분이 쓸데없이 길었던것 같아서 중도에 읽다가 말았다.ㅠㅠ... 지극히 내 개인적인 생각으로는 아 이거 이렇게 해도 되나 싶을 때 다시 보면 될 것 같다.(너무 원론적이야!) 이번에는 배치의 도메인 언어 부분을 읽어볼 것이다. 그리고 읽는 와중에 이런 Job, JobLauncher같은 특별한 것들은 해석이 안된다. 그래서 되도록 본연의 개념을 더 알 수 있도록 영어로 그대로 적고자 한다. (영어 최고야 아잉!) 모든 경험있는 배치 설..

Spring/Spring Batch 2023.11.19

[Spring Batch] 2장 : 스프링 배치 구조(Spring Batch Architecture), 일반적인 배치 원칙(General Batch Principle), 배치 처리 전략(Batch Processing Strategies)

지난번에는 간단하게 스프링 배치가 무엇인지, 무슨 역할을 하는지에 대해 글을 읽어보았다. (지난 내용이 궁금하면 여기 클릭!) 이번에는 스프링 배치의 구조에 대해 공부하려고 한다. 1. 스프링 배치 구조(Spring Batch Architecture) 스프링 배치는 확장 가능성(extensibility)와 다양한 최종 사용자를 염두해 설계했다. 아래 이미지는 최종 사용 개발자(end-user developers)의 편의성과 확장 가능성을 지원하기 위한 계층화 구조이다. 이 계층형 아키텍처(layered architecture)는 세 개의 주요 상위레벨 (high-level) 구성들을 강조한다. (Application, Core, Instrastructure). 어플리케이션(Application)은 모든 ..

Spring/Spring Batch 2023.11.17

[Spring Batch] 1장 : 소개(Introduction)

귀중한 시간을 할애해서(Time is gold~) 스프링 배치에 대해 공부하려고 한다. 그동안 스프링 배치(Spring Batch)에 대해 관심이 많았고 심지어 inflearn에서 15만원에 육박하는 정수원 선생님의 강의도 사서 들었는데 (정확히는 듣다가 좀 남기고 말았다) 아쉬운 점이 좀 있었다. Spring Security 와 마찬가지로 정리를 잘 해주는것은 좋은데 Spring Batch의 경우 양이 너무 방대하고, 이렇게까지 모든 내용을 강의로 만들어서 해야 하는 의문감도 있었다. 꽤 오랜 기간 글을 정리하지 않았는데, 그 이유는 차라리 책을 사서 공부하는것이 도움이 되는 경우에 많이 생겼기 때문이다. 가령, SQL 성능 및 튜닝 관련해서 책을 읽는다던가, 아니면 간단하게 강의를 듣는게 효율이 더 ..

Spring/Spring Batch 2023.11.12

2023-07-29 - 나의 생각 끄적이기

최근들어 CS(Computer Science) 강의와 책을 계속 찾아보고있다. 인프런에서는 "나혼자 공부하는 컴퓨터 구조+운영체제"를 한 번 다 보았고, 전에 샀던 "실습과 그림으로 배우는 리눅스 구조" 책을 펴서 공부한지 2주일 정도(공교롭게도 오늘 다읽음!) , 또한, 지인에게 빌려주었던 "쉽게 배우는 운영체제" 를 다시 읽으려고 준비중이다. 그렇다, 나는 기초로 회귀하고 있다. (웹툰만 회귀가 유행인게 아니라 나의 공부도 회귀를 하네...) 공부나 자기계발을 게을리 하지 않으려고 했으나 자꾸 무언가 놓치고 있다는 생각이 끊임없이 들고 있었다. 생각보다 늘어지는 시간이 많아지고, 자신을 원하는 방향으로 이끄는데 생각보다 버겁다고 느낀 경우도 많았다. 이러한 찰나 어째서 이러한 생각을 가지게 되었는지 ..

일기 2023.07.29

[Java] 불변객체를 사용해야 하는 이유 + record 사용하기

최근에 스스로 공부를 하면서 java14부터 도입된 record 기능을 사용해 보았는데 그냥 그럭저럭 사용을 해보았다. 문제는 그냥 사용을 하는데 그치는게 아니라 왜 불변 객체가 필요한지 이해를 못하고 있다는 점이다. 전에 들어본적 있는데 솔직히... 개발자로 계약해서 들어왔는데 코딩 업무 안주는거 뭐냐...? ㅠㅠ... 하여간 이번 기회에 다시 무엇이 문제인지, 왜 필요한지 찾아보고 정리하려고 한다. 참고한 내용은 다음과 같다. 출처: https://ko.wikipedia.org/wiki/%EB%B6%88%EB%B3%80%EA%B0%9D%EC%B2%B4 https://hackernoon.com/5-benefits-of-immutable-objects-worth-considering-for-your-ne..

[시스템 디자인] ID Generator 알아보기 (feat: Twitter Snowflake, tsid)

옛날에는 단순 코드 잘 작성하는 것에 급급하는 주니어 개발자였다면, 현재는 나에게 기회나 설명은 전~~~혀 오지 않지만 시스템 디자인에 자꾸 눈이 가는 주니어 개발자다 물론 결론은 동일하게 주니어 개발자다! 말하고자 하는 내용은 내가 아직도 핫바리 주니어라는 것이 아니라... 지난번에 2023년 인프런에서 개최한 스프링 컨퍼런스에 참여했었는데 같이 참석한 지인과 함께 개인용 학습 프로젝트에 대해 이야기하고 있었는데 T사의 면접에서 uuid 정렬에 관련해서 질문을 받았다고 했다. 처음에 나의 생각은 "uuid를 왜 정렬하지?" create_date를 별도로 넣어서 사용하면 되는거 아닌가? ㅎㅎ 머... 머기업에서 쓰라는데 이유가 있겠지~ ㅋㅋㄹㅃㅃ ^^ 이러한 생각을 가지고 있었다. 그리고 최근들어 시스템..

시스템 디자인 2023.06.03

2023-05-07 : 생각 끄적이기

어릴적 한 아이가 있었다. 그의 삶은 오로지 부모님말을 잘 듣고, 학원에 잘 다니면 무엇이든 인생이 잘 풀리리라 생각을 했다. 학교에서 시험 성적을 잘 받으면 기분이 좋았고, 이렇게 정해진 답을 찾으면서 사는 것이 옳은 것이라 늘 생각을 했다. 그는 어릴때부터 야단을 맞는 일이 그렇게 많지 않았다. 말을 잘 듣고, 자기 나름대로 무언가를 하는 듯 보였기 때문이다. 실제로 그 당시에는 그랬을 것이다. 무언가를 한다는 것, 그것은 결과로서 보이는 무언가지만 성적은 결코 인생의 성취를 보장하지는 않았다. 아이러니한 것은, 그러한 어린 시절의 많은 배움과 많은 노력은 오로지 대학 하나를 가기 위해 쓰였다는 점이며, 그러한 환상에 어린 인생은 모조리 집중되었다. 대학교 진학 - 졸업 후 더 웃긴 것은 그 대학의 ..

일기 2023.05.07

[디자인 패턴] 2장 - 옵저버 패턴(Observer Pattern) 알아보기

지난 시간에는 디자인 패턴의 필요성과 디자인 원칙에 대해 공부하였다. 지난 내용이 궁금하면 여기 클릭!! 이번 시간에는 옵저버 패턴에 대해 공부할 것이다. 이를 위해 상황 설명, 얻을 수 있는 장점, 그리고 코드로 옵저버 패턴에 대해 이해할 것이다. 참고한 내용은 다음과 같다. https://m.hanbit.co.kr/store/books/book_view.html?p_code=B6113501223 1. 객체와 객체지향? 객체는 실제를 본떠 새로운 세계를 창조하는 것으로, 각각의 객체는 자신의 역할과 책임을 다하고 각자의 역할을 충실한 채로 서로 협력하는 것을 객체 지향이라고 한다. 이 객체란 무엇인가에 대해 인지를 하고 다음 상황 설명을 보고, 음미해보면 더욱 이해가 잘 된다. 2. 상황 설명 우리는 ..