데브콘 활동 후기

[Review] 2024-09-07 K-DEVCON DEAJEON 스터디 후기

dev-jonghoonpark 2024. 9. 15. 20:39
📢 notice.

K-DEVCON Daejeon 브랜치는 대전, 세종을 중심으로 운영 중인 개발자 커뮤니티이며 온라인으로 IT 지식과 개발에 관련된 토론을 나누고,
오프라인 정기 스터디 모임(격주 토요일, 유료)이 진행되고 있습니다. IT업계에 종사하고 있거나 IT를 공부하고 있다면 누구나 함께할 수 있습니다. 자세한 내용은 아래 링크를 참고해 주세요.


K-DEVCON Daejeon
K-DEVCON Daejeon 정기 스터디 모임 신청 문의

 

안녕하세요 K-DEVCON(k-devcon.com) 입니다.

 

지난 9월 7일(토)에 K-DEVCON 대전 챕터에서는 24번째 오프라인 스터디가 진행되었습니다.

 

이번 스터디에서 진행된 내용은 다음과 같았습니다.

 

박종훈 
- 트랜잭션과 잠금에 대해서 알아봅니다.
- Real Mysql 8.0 (5장)

이예성
- 불변성을 활용하여 코드를 안정화 하는 방법과 분산되어 있는 코드를 개선하는 방법에 대해서 알아봅니다.
- 내 코드가 그렇게 이상한가요? : 좋은 코드/나쁜 코드로 배우는 설계 입문(4-5장)

 


불변성을 활용하여 코드 안정화하기 / 분산되어 있는 코드를 개선하기 (이예성 님)

예성님은 평소에도 좋은 코드에 관심이 많으신 분이십니다.

이번 발표에서도 다양한 책과 글을 함께 소개해주셔서 재밌게 들을 수 있었습니다.

불변성

소프트웨어를 개발할 때 예상치 않은 상황이 발생하지 않도록 하는 것이 중요합니다.

 

불변성은 객체를 생성한 후에는 그 상태를 바꿀 수 없도록 하는 것을 의미합니다.

이를 통해 데이터의 변경이 발생되지 않을 수 있도록 하고, 예상치 않은 상황이 발생하지 않도록 합니다.

불변 객체를 사용하면 예상치 못한 side-effect(부수효과)를 줄일 수 있습니다.

소프트웨어는 갈수록 복잡해져가기 때문에 최신 프로그래밍 언어들은 불변성을 사용하는 것을 권장하는 추세입니다.

 

물론 항상 불변성을 써야하는 것은 아닙니다. 데이터의 변경이 일어날 때마다 객체를 생성해야 한다면, overhead가 커질 수 있습니다.

대용량 데이터의 CRUD를 진행하거나, 리소스 제약이 큰 임베디드 환경에서는 가변 객체로 처리하는 것이 더 적합할 수 있습니다.

 

응집도

소프트웨의 응집도를 높이는 것은 중요합니다.

데이터와 로직을 모아 응집도가 높은 구조로 설계해야 합니다.

 

응집도가 높은 구조로 설계가 되었다면
기능을 수정하고 싶을 때 관련된 내용이 한 곳에 모여있어 코드를 이해하기도 쉽고 수정하기도 쉬우며,
다른 모듈들에도 영향을 주지 않을 수 있습니다.

 

 

MySQL 트랜잭션과 잠금 (박종훈 님)

트랜잭션과 잠금은 데이터베이스의 중요한 부분입니다.

이번 시간에는 MySQL에서는 트랜잭션과 잠금이 어떤것이 있고, 어떻게 사용해야 하는지에 대해서 알아보았습니다.

 

스터디에서 진행했던 내용은 블로그 글로도 정리해보았습니다.
더 자세히 알아보고 싶으신 분은 블로그 글도 참고해보시면 좋을 것 같습니다.

 

트랜잭션

트랜잭션은 데이터의 정합성을 보장한다. 다른 말로 하면 작업의 완전성을 보장합니다.

트랜잭션은 아래 두 가지 중 한가지 상태가 될 수 있도록 보장해줍니다.

 

논리적인 작업셋 (쿼리의 갯수는 중요하지 않음) 에 대해
- 100% 적용되거나 (COMMIT을 실행했을 때)
- 아무것도 적용되지 않음 (ROLLBACK 또는 트랜잭션을 ROLLBACK 시키는 오류가 발생했을 때)

 

작업의 일부만 적용되는 현상(Partial update)이 발생하지 않게 합니다.

잠금

잠금은 동시성을 제어를 보장합니다.
여러 커넥션에서 동시에 동일한 자원을 요청할 경우, 순서대로 하나의 커넥션만 변경할 수 있게 해줍니다.

 

MySQL InnoDB Record Lock

MySQL은 InnoDB 은 Record Lock 탑재하고 있습니다. 이를 통해 이전과 비교하였을 때  더 뛰어난 동시성 처리를 제공할 수 있게 되었습니다.

InnoDB의 레코드락은 정확하게는 레코드 자체가 아니라 인덱스의 레코드를 잠급니다. 따라서 MySQL에서는 Index를 잘 설계하는 것이 중요합니다.

인덱스와 관련된 부분도 추후 스터디 내에서 다뤄볼 예정입니다.


 

K-DEVCON 대전 스터디에 참여하고 싶으신 분들은 언제든지 환영합니다.

저희는 단순히 진도를 나가는데 목적을 두는 것이 아니라 해당 주제에 대해 서로 공부해 온 것을 기반으로 이야기 하면서 스터디를 진행하고 있습니다. 모르는 부분은 질문하고, 자기가 알던 내용과 다르면 얼마든지 의견을 제시해도 좋습니다. 같이 더 좋은 것을 얻어가기 위해 함께 노력하고 있습니다.

서로서로 현업에서 있었던 일이나, 최근 있었던 이슈들에 대해서도 이야기 하고 있습니다.

오늘도 다들 파이팅입니다!