본문 바로가기
후기 & 회고

1주 1스프린트 14회차 회고

by 0xe82de 2023. 3. 11.
반응형

이번 스프린트는 안성탕면 스프린트다. 5개의 에픽을 진행했다.

순번 구분 에픽 시작 스프린트 에픽 완료 여부
1 웹사이트 1일 ?개 알고리즘 문제 풀기 1회차  
2 스터디 회사 스터디 1회차  
3 Real MySQL 8.0 1권 13회차  
4 인프런 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 12회차  
5 인프런 토비의 스프링 부트 - 이해와 원리 14회차 O

 

반응형

 

1. 1일 ?개 알고리즘 문제 풀기

총 17개 문제를 풀었다. 10문제는 프로그래머스의 Level 0 문제이고, 7문제는 백준 문제다. 백준 문제도 실버 하위 수준 문제를 풀었기 때문에 난이도는 대체적으로 낮았다.

 

특별히 기억에 남는 문제는 아래 문제다. 문제에서 제시하는 출력 양식과 범위를 제대로 인지하지 못해서 문제를 해결하는 데 시간이 꽤 걸렸다.

 

14729번: 칠무해

조(Joe)는 중앙대학교 교수이고, 논리회로 설계 과목을 담당하고 있다. 그는 수업을 하면서 7명의 학생을 제외한 나머지 학생들에게 좋은 학점을 주겠다고 약속을 하였다. Joe 교수님을 돕기 위해

www.acmicpc.net

 

2. 회사 스터디 & 3. Real MySQL 8.0 1권

 

Real MySQL 8.0 (1권) - YES24

『Real MySQL 8.0』은 『Real MySQL』을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS 및 전문 검색 등의 확장 기능들을 추가로

www.yes24.com

이번 스프린트에서는 지난 스터디에서 진행하지 못한 4.4장과 5, 6장을 공부하고 스터디를 진행했다. 원래 5장까지만 진행하려고 했는데, 주중에 책을 읽으면서 6장까지 읽어도 괜찮겠다는 생각이 들어서 6장까지 해보자고 제안을 했고, 그렇게 되었다.

 

4.4장, 5장, 6장에서도 많은 지식을 알게 되었다. 4.4장의 로그 관련 내용은 지난 스프린트 회고 글에서 작성했으므로 5장과 6장에서 알게 된 지식 중 일부를 아래에 정리해 보았다.

  • 프로그램 코드 라인 수가 적더라도 네트워크 작업이 있는 경우에는 반드시 트랜잭션에서 배제해야 한다.
  • 글로벌 락이 영향을 미치는 범위는 MySQL 서버 전체이기 때문에 테이블이나 데이터베이스가 다르더라도 동일하게 영향을 받는다.
  • InnoDB 스토리지 엔진의 레코드 락은 레코드 자체가 아닌 인덱스의 레코드를 잠근다.
  • 갭 락은 레코드와 레코드 사이의 간격을 잠근다.
  • 넥스트 키 락은 레코드 락과 갭 락을 합쳐 놓은 잠금이다. MySQL은 넥스트 키 락을 활용해 Repeatable Read 격리 수준에서 Phantom Read 현상이 발생하지 않도록 한다.
  • 테이블 압축 시 KEY_BLOCK_SIZE에 지정된 값으로 페이지의 크기를 결정한다. 따라서, 이 값을 조정하면서 압축을 해보고 적절한 KEY_BLOCK_SIZE를 설정하는 것이 좋다.
  • InnoDB 스토리지 엔진은 압축된 테이블의 데이터 페이지를 버퍼 풀에 적재하면 압축된 상태와 압축되지 않은 상태를 모두 관리하는데, 압축되지 않은 데이터 페이지를 적절한 수준으로 유지하기 위해 어댑티브 알고리즘을 사용하여 데이터 페이지 비율을 조정한다.

내가 만든 퀴즈

1. InnoDB 스토리지 엔진은 압축된 테이블의 데이터 페이지를 버퍼 풀에 적재하면 압축된 상태와 압축이 해제된 상태 2개 버전을 관리합니다. 이때 LRU 리스트와 Unzip_LRU 리스트가 가지는 페이지를 나열하세요.

더보기
  • LRU 리스트 : 압축이 적용되지 않은 테이블의 데이터 페이지, 압축이 적용된 테이블의 압축된 데이터 페이지
  • Unzip_LRU 리스트 : 압축이 적용된 테이블에서 읽은 데이터 페이지

 

4. 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch

 

스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch - 인프런 | 강의

초급에서 중~고급에 이르기까지 스프링 배치의 기본 개념부터 API 사용법과 내부 아키텍처 구조를 심도있게 다룹니다. 그리고 스프링 배치 각 기능의 흐름과 원리를 학습하게 되고 이를 바탕으

www.inflearn.com

이번 스프린트에서는 섹션 4, 5를 들었다.

 

각각 Job과 Step에 대해 자세하게 설명하고 있다. 빌더 팩토리, API, 아키텍처 등을 실습을 통해 코드를 살펴보고 배치 프로그램을 만들어볼 수 있다.

 

빠르면 다음 스프린트에서 시작할 토이 프로젝트에서 스프링 배치를 사용하려고 한다. 아직 Chunk, ItemReader, ItemWriter, ItemProcessor 관련 섹션을 학습하지 못했지만 토이 프로젝트와 스프링 배치 강의를 병행하면서 필요한 기능을 만들어보며 공부할 생각이다.

 

5. 토비의 스프링 부트 - 이해와 원리

 

토비의 스프링 부트 - 이해와 원리 - 인프런 | 강의

스프링 부트의 핵심 기능을 직접 만들어보면서 스프링 부트의 동작 원리를 이해하고, 이를 통해 스프링 부트를 잘 학습하고 사용하는 방법을 배우는 강의입니다. 스프링 부트가 사용하는 스프

www.inflearn.com

이번 스프린트에서 인프런의 '토비의 스프링 부트 - 이해와 원리' 강의를 완강했다. 약 11시간 분량의 강의인데 스프린트를 진행하면서 매일 2시간 정도씩 듣다 보니 한 스프린트에서 강의를 완강하게 되었다.

 

강의를 들어보니 예상했던 강의 내용과 조금 달랐다. 스프링 부트를 활용해 웹 애플리케이션을 만드는 강의로 예상했는데, 스프링 부트를 만드는 강의였다(그리고 스프링 부트는 계획이 다 있는 놈이었다).

 

나는 스프링 부트를 SSAFY와 인프런을 통해 배웠다. SSAFY에서 받은 학습 자료와 책, 인프런의 김영한님의 강의를 들으면서 배웠다. 이렇게 공부한 스프링 부트에서 지원되는 기능(annotation, jdbc, mvc, advice, transaction 등)도 잘 사용해왔다. 하지만 내부 원리는 잘 알지 못했다.

 

토비의 스프링 부트 강의는 스프링 부트의 main 메서드를 실행하면 발생하는 일련의 과정을 직접 구현해 보며 내부 원리를 파악해 간다. 그리고 이 과정에서 스프링 부트를 어떻게 활용할 수 있을지에 대한 인사이트를 제공한다.

 

물론, 강의를 들었다고 해서 스프링 부트의 모든 것을 이해하기에는 무리가 있다. 하지만, 스프링과 스프링 부트를 사용하는 개발자로서 스프링 부트의 컨셉과 내부 원리를 이해하고 스프링 개발 역량을 한 단계 발전시킬 수 있는 계기가 될 수 있을 듯하다(나는 그랬다).

 

강의에서 소개된 내용을 모두 이해하지는 못했지만, 앞으로 스프링 부트를 사용하면서 하나씩 내 것으로 만들어가야겠다. 그리고 김영한님도 스프링 부트 강의를 출시했으니, 얼른 들어야겠다.

반응형

'후기 & 회고' 카테고리의 다른 글

1주 1스프린트 16회차 회고  (0) 2023.03.25
1주 1스프린트 15회차 회고  (0) 2023.03.18
1주 1스프린트 13회차 회고  (0) 2023.03.04
1주 1스프린트 12회차 회고  (0) 2023.02.25
1주 1스프린트 11회차 회고  (0) 2023.02.18

댓글