데브콘 활동 후기

[Review] 2024-01-20 K-DEVCON DEAJEON 스터디 후기

알 수 없는 사용자 2024. 1. 21. 23:20
📢 notice.

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



l   K-DEVCON : https://k-devcon.com/groups
l   K-DEVCON Daejeon 정기 스터디 모임 신청 문의  : https://forms.gle/dF6rR6oF4QE68LDq6

 

 


 

 

안녕하세요? 😄

2024년 1월 20일에 K-DEVCON Daejeon 브랜치에서 진행된 스터디 내용을 공유드리고자 후기를 작성합니다.

이번 주에는 새로운 책, 데이터 중심 애플리케이션 설계 책으로 스터디가 진행되었습니다!

 

 

 

 

 

잠시 책 소개를 먼저 하겠습니다.

데이터 중심 애플리케이션 설계 책은 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 시스템을 지탱하는 핵심 아이디어들을 다룬 책으로 소프트웨어를 설계할 때 확장성, 일관성, 신뢰성, 효율성, 유지보수성과 같은 문제를 파악하고, 기존에 사용하고 있는 시스템의 내부를 자세히 들여다 봄으로써 더 효율적으로 운용하는 방법을 배울 수 있는 책입니다.

 

처음 책을 마주했을 때 책 제목에 '데이터'라는 말이 있다 보니 DB에 관련된 책인가?라는 생각이 들었는데 DB 뿐만 아니라 데이터 인프라와 시스템을 설계하고 구현하는 개발자에게 어떤 상황에서 어떤 도구 혹은 결정을 내려야 할지 도움을 줄 수 있는 책이더라고요.

그리고 장마다 연계성이 없다 보니, 스터디 참여를 원하는 분들은 언제든 합류가 가능할 것으로 보입니다. 🙌 언제든 환영입니다!

 

그럼 스터디 후기를 시작하겠습니다~~ 이번 스터디는 대전 궁동에 위치한 더포럼에서 진행이 되었습니다.

날이 쌀쌀했는데 많은 분들이 참여해 주셨습니다.

 

 

 

 

일정

l 2024.01.20 14:00-18:00 (4h)

l 대전 궁동 더포럼

 

참여자 수

l 15명

 

스터디 진행 내용

l  데이터 중심 애플리케이션 설계 Part 1 - 01. 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 : 박 OO

l  데이터 중심 애플리케이션 설계 Part 1 - 02. 데이터 모델과 질의 언어 : 김 OO

l  토론

 

 

 

 


데이터 중심 애플리케이션 설계 Part 1

01. 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션

 

K-DEVCON 대전 정기 스터디

1장에서는 이 책을 통해 달성하고자 하는 신뢰성(reliability)과 확장성(scalability), 유지보수성(maintainability)에 대한 의미를 명확히 정의하고 어떻게 생각해야 하는지 어떤 방식으로 달성할 수 있는지에 대한 내용이었습니다.

책을 설명할 때 나와있는 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 데이터 시스템을 구축하기 위해서는 각각의 의미를 명확히 이해하는 것이 기본이기 때문에 1장에서 다루는 것 같습니다.

 

 

 

 

K-DEVCON 대전 정기 스터디

 

에러와 결함은 어떤 차이가 있을까요?  혼용해서 사용하는 용어들에 대한 개념을 정리하고 '우리가 생각하는' 상황들을 공유하며 같이 고민해 보는 시간을 가졌습니다. 에러는 시스템은 정상이나 잘못된 입력이나 부정확한 조작으로 인한 발생, 결함은 시스템이 의도한 동작과 일치하지 않는 상태라고 정의합니다.

 

 

 

K-DEVCON 대전 정기 스터디

 

확장성은 증가한 부하에 대처하는 시스템 능력을 설명합니다. 부하를 다루기 위해서는 무엇보다 시스템의 현재 부화를 간결하게 기술할 수 있어야 합니다. 그래야 부하 성장 질문을 논의할 수 있습니다. 기초 개념부터 명확히 하기 위해서 부하를 기술할 때 사용되는 용어들을 먼저 정리하였습니다. 응답 시간과 지연 시간도 쉽게 혼용되는 용어인데, response time, latency 원어로 함께 살펴보니 다름이 한눈에 파악이 됩니다. 

 

 

아! 혼용되는 용어로 함께 나누었던 이야기가 생각나네요. 내결함성과 탄력성의 차이를 알고 계시나요?

내결함성은 "결함이 발생했을 때 대처할 수 있도록 처리(예: 이중화, 터치 스크린의 결함으로 키보드를 대처하는 것)", 탄력성은 "서비스는 끊기지 않고 유지하는 것(예: 요청이 많이 오면 스펙을 올려 대처하는 것)"으로 생각할 수 있습니다.

 

혼용되는 용어의 명확한 개념이 왜 중요할까요?

우리가 소프트웨어를 개발할 때 내결함성을 가진 설계와 탄력성을 가진 설계는 다릅니다. 애플리케이션마다 요구사항이 다르기 때문에 설계와 접근 방식도 달라집니다. 용어의 개념을 정확하게 인지하고 있어야 적합한 설계가 가능하게 됩니다.

 

 

 

 

K-DEVCON 대전 정기 스터디

 

1장 내용을 정리하자면 애플리케이션이 유용하기 위한 다양한 요구사항 중 비기능적 요구사항에 해당하는 신뢰성, 확장성, 유지보수성을 자세히 살펴봤습니다. 

신뢰성은 결함이 발생해도 시스템이 올바르게 동작하게 만든다는 의미이며 정의와 함께 내결함성 기술을 통해 최종 사용자에게 특정 유형의 결함을 숨길 수 있게 하는 방법에 대해 알아봤습니다. 그리고 확장성은 부하가 증가해도 좋은 성능을 유지하기 위한 전략으로 양적으로 부하와 성능을 설명하는 방법에 대한 이해와 예로써 트위터의 홈 타임라인, 응답 시간 백분위, SLO, SLA에 대해 살펴봤습니다. 

마지막으로 유지보수성은 좋은 추상화로 복잡도를 줄이고 시스템을 변경할 수 있는 것으로 운용성, 단순성, 발전성에 대하여 알아봤습니다.

 

 

 

 


데이터 중심 애플리케이션 설계 Part 1

02. 데이터 모델과 질의 언어

 

 

K-DEVCON 대전 정기 스터디

 

 

"내 언어의 한계는 내 세계의 한계를 의미한다." 

- 루트비히 비트겐슈타인, 논리-철한 논고(1922)

 

2장 데이터 모델의 첫 페이지에는 짧지만 강렬한 명언이 작성되어 있습니다. 

데이터 모델은 결국 소프트웨어가 어떻게 작성됐는지 뿐만 아니라 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 영향을 미칩니다. 다양한 유형의 데이터 모델이 있고 각 데이터 모델은 사용 방법에 대한 가정을 나타내게 됩니다. 데이터 모델은 그 위에서 소프트웨어가 할 수 있는 일과 할 수 없는 일에 지대한 영향을 주므로 애플리케이션에 적합한 데이터 모델을 선택하는 작업은 상당히 중요합니다. 

2장에서는 다양한 데이터 모델의 비교와 질의 언어를 살펴보고 사용 사례도 비교하고 있습니다.

 

 

K-DEVCON 대전 정기 스터디

 

 

데이터 모델의 특성을 살펴보면서 CAP에 대해서도 함께 토론하는 시간을 가졌습니다.

CAP분산 시스템 특성 3가지로 일관성(Consistency), 가용성(Availability), 분할 내성(Partition tolerance)입니다. 

일관성은 어떤 노드에 연결되었는지와 무관하계 모든 클라이언트가 동시에 동일 데이터를 볼 수 있음을 의미하고,

가용성은 하나 이상의 노드가 작동 중지된 경우에도 데이터를 요청하는 클라이언트가 응답을 받음을 의미합니다.

분할 내성은 분산 시스템 내의 통신 단절, 즉 두 노든 간의 연결이 유실되거나 일시적으로 지연된 상태에도 불구하고 클러스터가 계속해서 작동하는 것을 의미하게 됩니다.

 

사진의 CAP 이미지가 보이시나요? 두 개의 원이 겹치는 부분에 CA, CP, AP라고 작성되어 있습니다.

분산 시스템은 세 가지 특성 중 두 가지만 제공할 수 있음을 증명한 정리입니다. 

 

일관성과 가용성을 가진 CA에서는 우리가 사용하는 RDB를 들 수 있고, 일관성과 분할 내성을 가진 CP에서는 MongoDB를,  가용성과 분할 내성을 가진 AP에는 Cassandra를 들 수 있습니다. 

 

 

K-DEVCON 대전 정기 스터디

 

 

맵리듀스(MapReduce)에 대하여도 토론하는 시간을 가졌습니다.

많은 컴퓨터 대량의 데이터를 처리하기 위한 프로그래밍 모델로, 많은 문서를 대상으로 읽기 전용 질의를 수행할 때 사용됩니다.

대용량 데이터를 병렬 처리를 지원하기 위하여 개발되었으며 여러 함수형 프로그래밍 언어에 있는 map과 reduce 함수를 기반으로 합니다.

임의의 순서로 정렬된 데이터를 분산 처리하고, 작업을 진행한 후 이를 다시 합치는 과정을 거치게 됩니다.

 

 

 

 

K-DEVCON 대전 정기 스터디

 

NoSQL가 RDB와 다르게 해주는 가장 큰 특징인 스키마리스(schemaless), 읽기 스키마(schema-on-read)쓰기 스키마(schema-on-write)에 대한 개념과 장단점에 대하여 토론하는 시간도 가졌습니다.

마지막에는 현업에서 가지고 있는 고민을 나누고, 소프트스킬에 대한 조언도 얻는 네트워킹 시간을 가졌습니다.

 

 

 

 

 


K-DEVCON 대전 정기 스터디

 

새로운 책의 설렘과 책을 읽었으나 가볍게 읽고 왔다는 머쓱함과 스터디를 통해 용어에 대한 더 깊은 이해를 배우게 되었다는 후기도 나누고, 책을 제대로 읽는 방법에 대하여 이야기를 나누며 스터디를 마무리했습니다.

 

추운 날씨에도 바쁜 시간 내어 참석해 주신 분들 너무 멋있습니다! 정말 정말 고생하셨습니다. 🙌

너무 즐거운 시간이었습니다! 2주 뒤에는 또 어떤 이야기를 나눌지 기대가 됩니다. 

저도 이번 스터디에서 부족했던 준비에 대한 아쉬움을 담아 더 열심히 살펴봐야겠습니다. :)

 

 

이만 마무리하겠습니다. 부족한 부분이 있거나 궁금하신 게 있다면 언제든 댓글 달아주세요. 

긴 글 읽어주심에 감사인사드리며, 좋은 하루 보내시길 바랍니다.

감사합니다!