이번 스프린트는 파스타 스프린트다. 4개의 에픽을 진행했다.
순번 | 구분 | 에픽 | 시작 스프린트 | 에픽 완료 여부 |
1 | 웹사이트 | 1일 ?개 알고리즘 문제 풀기 | 1회차 | |
2 | 스터디 | 회사 스터디 | 1회차 | |
3 | 책 | 실전 카프카 개발부터 운영까지 | 2회차 | O |
4 | 책 | 모던 자바 인 액션 | 3회차 |
1. 1일 ?개 알고리즘 문제 풀기
총 7개 문제를 풀었다. 백준 문제를 풀었는데, 다른 스프린트 때보다 난이도 대비 어렵게 느껴진 것 같다.
이번 스프린트 문제들은 기억에 남는 문제가 많은데, 대표적인 문제는 아래 문제다. 아래 문제는 조건에 맞는 모든 숫자 조합을 찾는 문제다. 나는 주어지는 조건을 분석해서 숫자 조합을 찾으려 했지만, 결국 방법을 생각해내지 못했다.
2503번: 숫자 야구
첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트
www.acmicpc.net
질문 게시판의 아래 질문을 통해 힌트를 얻을 수 있었고, 결과적으로 문제를 풀 수 있었다. 이 문제가 기억에 남는 이유는 힌트를 주고 있는 사람이 초등학생이었기 때문이다. 이 문제를 풀면서 알고리즘 사고 능력이 부족하다는 것을 느꼈다..
글 읽기 - 숫자야구
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
2. 회사 스터디
이번 스프린트에서도 '모던 자바 인 액션' 책을 공부하고 의견을 나눴다. 지난 스프린트 때의 일부 내용과 챕터 8에 대해 생각을 공유하는 시간을 가졌다.
모던 자바 인 액션 - YES24
자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴
www.yes24.com
- 프레디케이트를 활용한 검색과 매칭
- 리듀싱
- 기본형 특화 스트림
- 그룹화, 분할
- 컬렉션 팩토리
이번 스프린트에서는 스트림을 공부하면서 실무나 개인 프로젝트에 바로 적용해볼 수 있는 것이 무엇이 있는지 각자 생각을 공유했다.
개인적으로 좋았던 기능은 '프레디케이트를 활용한 검색과 매칭' 기능과 '그룹화, 분할' 기능이다.
프레디케이트를 활용해 특정 조건을 만족하는 데이터를 찾거나 참, 거짓 여부를 쉽게 확인할 수 있었다. 알고리즘 문제를 풀 때도 조건을 확인하는 경우가 많은데, 이 기능을 활용해 코드 길이를 줄일 수 있었다.
그리고 그룹화와 분할 기능을 통해 특정 기준에 의해 데이터를 나눌 수 있었다. 아직 해당 기능을 많이 활용하지는 못했지만, 앞으로 실무나 개인 프로젝트에서 많은 로직에서 사용할 것으로 생각된다!
3. 실전 카프카 개발부터 운영까지
실전 카프카 개발부터 운영까지 - YES24
아파치 카프카의 공동 창시자 준 라오(Jun Rao)가 추천한 책!국내 최초이자 유일한 컨플루언트 공인 아파치 카프카 강사(Confluent Certified Trainer for Apache Kafka)와 공인 관리자 자격(Confluent Certified...
www.yes24.com
이번 스프린트에서는 10장, 11장, 12장, 13장, 부록을 읽고 책을 마쳤다. 스키마 레지스트리, 카프카 커넥트, 아티텍처 구성 사례, 카프카 발전 방향 등을 알 수 있었다.
10장에서는 스키마 레지스트리를 통해 프로듀서와 컨슈머 사이에 전송되는 데이터 스키마를 지정하는 방법을 알게 되었다. 그리고 BACKWARD, FORWARD, FULL 호환성을 적용하여 실습하면서 프로듀서와 컨슈머의 스키마 레지스트리 버전이 다를 때 데이터가 어떻게 처리되는지도 알게 되었다.
11장에서는 카프카 커넥트를 배웠는데, 일단 내용이 어렵게 느껴졌다. 카프카 커넥트를 활용해 카프카 클러스터 내에서 카프카, 커넥터, 서드파티 소프트웨어를 연결해 데이터 파이프라인을 쉽게 구성할 수 있는 것을 확인했다. 다만, 아직 이해도가 낮아 향후에 카프카를 프로젝트에 적용할 때 다시 한 번 공부를 해야할 것 같다(사실 이 책의 다른 내용들도 복습이 필요하다).
12장에서는 엔터프라이즈 환경에서 카프카를 어떻게 사용하고 있는지에 대해 알게 되었다. 책에서 소개한 내용을 바탕으로 실무에 카프카를 적용할 때 아키텍처가 어떻게 설계되는지를 어렴풋이 알게 되었다.
13장에서는 카프카의 발전 방향에 대해 알게 되었다. 주키퍼에 대한 의존성을 낮추려는 카프카와 새로운 합의 프로토콜인 KRaft 등 카프카라 어떻게 발전할지, 어떤 제안(KIP)들이 있는지에 대해 알게 되었다.
이렇게 책을 마무리하면서 첫 카프카 공부를 끝내게 되었다. 카프카 공부를 시작한 이유는 회사에서 맡은 서비스에 카프카가 적용되어 있기 때문이다. 그래서 카프카를 공부하면서 실무에서 운용되고 있는 카프카를 다뤄볼 수 있을 것으로 생각했지만 얼마전에 수습기간이 종료되면서 담당할 서비스가 변경되었고, 해당 서비스에는 카프카가 없어서 당장 카프카를 다루지는 못하게 되었다.
다만, 회사에서 새롭게 맡게된 서비스에 카프카를 적용해보거나 개인 프로젝트에 적용하여 공부한 내용을 써먹어보려 한다(언제가 될지는 모르겠지만..).
'실전 카프카 개발부터 운영까지' 책을 통해 카프카를 처음 공부했는데, 좋은 책이라고 생각한다. 무엇보다 실습에 필요한 모든 내용이 자세하게 설명되어 있어서, 실습을 하는 데 어려움이 없었다. 책에서는 아래 책도 추천하고 있다. 책의 저자이신 '고승범'님께서 '실전 카프카 개발부터 운영까지' 책을 쓰시기 전에 출판하신 책인데, '실전 카프카 개발부터 운영까지' 책에서 다루지 않는 내용도 다루는 것으로 보인다. 향후에 카프카를 조금 더 깊게 공부할 필요가 있을 때 아래 책을 보면 좋을 것 같다.
카프카, 데이터 플랫폼의 최강자 - YES24
데이터 플랫폼의 핵심 컴포넌트로 각광받고 있는, 이벤트 기반 비동기 아키텍처를 위한 고가용성 실시간 분산 스트리밍 솔루션 카프카(Kafka)의 모든 것!국내 최대 모바일 플랫폼 회사인 카카오
www.yes24.com
4. 모던 자바 인 액션
이번 스프린트에서 가장 많이 공부한 책이다. 챕터 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 부록을 읽고 책을 마무리했다. 대부분의 챕터가 어려운 내용을 포함하고 있어 복습이 필요하지만, 처음 배우는 내용이 많아서 신선했다.
챕터 11에서는 Optional에 대해 공부했다. 사실 Optional의 기본적인 기능은 사용하고 있었는데, 이번 기회를 통해 Optional에 대해 알 수 있었다. Optional이 추가된 배경이나 Optional을 활용해 무엇을 할 수 있는지 등 도움이 되는 내용이 많았던 챕터였다.
챕터 12에서는 날짜와 시간 API인 LocalDate, LocalTime, LocalDateTime, ZonedDateTime 등에 대해 공부했다. LocalDate, LocalTime, LocalDateTime 정도는 사용을 하고 있던 API였기에 복습을 할 수 있었고, ZonedDateTime은 사용 경험이 적어 이번에 공부하면서 새롭게 알게 된 내용도 있었다.
챕터 13에서는 인터페이스의 디폴트 메서드에 대해 공부했다. 디폴트 메서드가 추가된 배경과 디폴트 메서드를 어떻게 활용할 수 있는지에 대해 알 수 있었다. 디폴트 메서드가 추가되면서 이전 버전에 대한 호환성을 지원하고 쉽게 인터페이스를 변경할 수 있게 되었음을 알게 되었다. 또한, 자바가 더 나은 언어로 발전하기 위해 다양한 기능을 고려하고 추가하고 있음을 느낄 수 있었던 챕터였다.
챕터 14에서는 자바 모듈 시스템에 대해 공부했는데, 종종 듣던 멀티 모듈과 관련된 내용이었다. 아직 모듈 시스템을 사용해보지 않았지만, 빠른 시일 내에 적용해볼 수 있는 지식이라고 생각하고 재밌게 읽었던 챕터다.
챕터 15, 16, 17에서는 리액티브 프로그래밍에 대해 공부했다. 일단 정말 어려웠던 챕터였다. 지금 이 내용을 공부하는 것이 맞는가에 대해 고민할 정도로 어려웠던 챕터였다. 처음 보는 개념과 API가 많았고, 비동기를 구현하기 위한 과정이 매우 어렵게 느껴졌다. 처음이기 때문에 그런 것이겠지만, 아직 비동기 기능을 제대로 구현해보지 못했기 때문에 더욱 어렵게 느껴진 것 같다. 이 챕터들은 향후에 반드시 복습이 필요하다. 리액티브 프로그래밍을 정복하면 경험치가 많이 쌓일 것 같다.
챕터 18, 19, 20에서는 함수형 프로그래밍과 스칼라 언어에 대해 공부했다. 앞쪽 챕터에서 람다와 스트림을 공부하면서 함수형 프로그래밍을 맛보기로 사용했는데, 이번 챕터들을 공부하면서 함수형 프로그래밍이 무엇인지와 함수형 프로그래밍에서 제공하는 기능이 무엇이 있는지 등을 알게 되었다. 또한 자바와 스칼라 언어를 비교하면서 스칼라가 함수형 프로그래밍을 어떻게 지원하는지도 알 수 있었다. 아직은 함수형 프로그래밍에 대해 많은 공부가 필요하고 객체지향 프로그래밍과 비교해 어떨 때 함수형 프로그래밍을 적용해야 하는지도 고민이 된다. 하지만 '모던 자바 인 액션' 책을 통해 람다와 스트림을 공부하고, 자바가 함수형 프로그래밍을 지원하기 위해 어떤 기능이 추가되었는지를 배우면서 함수형 프로그래밍에 대해 어렴풋이 알 수 있는 기회가 되었다.
챕터 21에서는 이전 챕터들에서 공부한 내용을 복기하고 자바의 미래에 대해 조금 알게 되었다.
'모던 자바 인 액션' 책을 공부하면서 자바에 대해 많은 것을 알 수 있었다. 정말 좋은 책이라고 생각한다. 특히 람다와 스트림을 통해 코드를 간결하고 직관적으로 고치고 성능도 올리는 방법을 알게 된 것은 큰 수확이었다. 이번 기회를 통해 자바를 다루는 능력이 조금은 올라가지 않았을까 생각한다. 물론 복습이 필요한 내용이 많다. 공부한 내용을 잊지 않고 복습하기 위해 실무나 개인 프로젝트에서 열심히 배운 내용을 적용해야겠다.
코로나 후유증인지 말을 하면 기침이 나와서 영어 공부는 잠시 쉬고 있다.
'후기 & 회고' 카테고리의 다른 글
1주 1스프린트 7회차 회고 (0) | 2023.01.23 |
---|---|
1주 1스프린트 6회차 회고 (0) | 2023.01.14 |
1주 1스프린트 4회차 회고 (0) | 2022.12.31 |
1주 1스프린트 3회차 회고 (2) | 2022.12.24 |
1주 1스프린트 2회차 회고 (0) | 2022.12.17 |
댓글