[KSUG] 기초 지식 스터디 2회차 요약

25년 KSUG에서 주니어 및 취준생 분들과 함께한 스터디 진행 기록입니다.
스프링 프레임워크 혹은 데이터베이스에 대한 스터디를 진행 했고, 저는 스프링 프레임워크를 선택했습니다.

*스프링 프레임워크 가이드 책: 스프링 부트3 핵심 가이드
*데이터 베이스 가이드 책: 새로 쓴 대용량 데이터베이스 솔루션 1

기여해주시는 멘토 분들께 항상 감사드립니다.

 

이번 시간에는 

 

  • Spring Boot - 제2장: 개발에 앞서 알면 좋은 지식
  • 데이터 베이스 - 1.3장: SQL의 실행 계획

부분을 정리해오기로 했다.

오늘은 스터디 시작 전에 발표를 자원해주신 분들이 계셔서, 비교적 원활하게 진행할 수 있었다.

 

오늘은 특별히 게스트로 '김근수'님께서 참석해 주셨는데, 발표 내용이 특히 인상 깊었다.

 

Spring Camp에서도 연사로 발표하셨다고 들었지만, 내가 참석했던 세션은 아니어서 직접 들을 수 없었던 점이 아쉬웠다.

 

근수님은 평소 마인드맵 형식으로 모든 내용을 정리하신다고 한다. 마인드맵 프로그램을 이용하면 단순히 생각나는 대로 적어도 마우스를 이용해 자유롭게 구조를 바꿀 수 있어 생각을 체계화하는 데에 매우 유용한 툴이라고 느꼈다.

 

근수님께서는 EdrawMind라는 툴을 쓰신다고 했는데, 유료 서비스라 예전부터 알고 있던 무료 툴인 XMind가 떠올랐다. 일단은 XMind로 시작해보고, 나중에 익숙해지면 블랙프라이데이 때 EdrawMind를 한번 사볼까 한다.

 

 

다음 날 바로 실무에 적용해보자는 마음으로, 현재 작업 중인 mevu 서비스 관련 내용을 XMind로 정리하고 앱팀과 회의를 진행했는데, 기획자분도 보기 좋고 회의도 수월하다고 칭찬해 주셔서 뿌듯했다. 아직은 정리 중이지만 마인드맵 가지가 점점 늘어나는 걸 보면서 잘 정리해보고 싶다는 의욕도 생겼다.

 

또 하나 인상 깊었던 점은 근수님이 모든 책을 이북으로 보신다는 점이다. 이북은 마인드맵으로의 전환이나 복사-붙여넣기가 쉬워 정리에 더 적합해 보였다. 나는 그동안 전공 서적은 종이책으로만 봤는데, 책이 집에 쌓이면서 점점 부담이 되었던 터라 이북 활용도 진지하게 고려해봐야겠다는 생각이 들었다.

 

이처럼 유용한 팁을 많이 얻을 수 있었던 뜻깊은 스터디 2회차 시간이었다.

 


아래는 GPT를 이용한 키워드 중심 스터디 요약본이다.


 

🔸 아키텍처 및 계층 구조

  • 3계층 구조 (Layered Architecture)
    • Presentation Layer (프레젠테이션 계층): 클라이언트와의 접점, 요청 및 응답 처리
    • Business Layer (비즈니스 계층): 비즈니스 로직, 트랜잭션, 유효성 검사
    • Persistence Layer (데이터 접근 계층): DB 접근, Repository 사용
  • 마이크로서비스 아키텍처(MSA)
    • 모놀리식과 비교
    • 단순히 서비스 쪼개는 게 아닌 "사상"이 중요
  • DTO, Entity, VO 구분
    • 레이어 간 데이터 이동을 위한 역할

🔸 디자인 패턴

  • 생성 패턴: Abstract Factory, Builder, Factory Method, Singleton 등
  • 구조 패턴: Adapter, Composite, Decorator, Facade 등
  • 행위 패턴: Chain of Responsibility, Command, Interpreter, Mediator 등

🔸 REST 아키텍처

  • REST 특성
    • 유니폼 인터페이스
    • 무상태성 (Stateless)
    • 캐시 가능성
    • 클라이언트-서버 구조
    • 계층 구조
  • RESTful URL 설계 규칙
    • /로 끝나지 않음
    • 하이픈(-) 사용, 언더바(_) 지양
    • 명사 사용 (동사 대신 HTTP 메서드로 행위 표현)
    • 소문자 사용
    • 확장자 지양
  • URI vs URL
    • URI: 자원의 고유 식별자
    • URL: 위치 및 접근 방식 포함한 URI

🔸 인증 및 인가

  • Authentication: 사용자 판별 (로그인 등)
  • Authorization: 자원 접근 권한 확인

🔸 HTTP 및 HTTPS

  • HTTP: 보안 없음
  • HTTPS: TLS 기반 보안 제공
    • SSL (구버전), TLS (현재 주 사용)
    • 포트: HTTP(80), HTTPS(443)

🔸 DispatcherServlet 흐름

  1. 요청 → DispatcherServlet
  2. HandlerMapping → Controller
  3. Service → Repository → DB
  4. Controller → ViewResolver
  5. View 반환

🔸 DB 저장 구조 및 최적화

  • 분리형 테이블 구조
    • 논리적 구조와 물리적 저장 분리
    • RowID 활용: 인덱스와 실제 데이터 연결
  • IOT (Index Organized Table)
    • 인덱스와 데이터를 함께 저장 → 빠른 조회
    • 수정 시 데이터 재배치 필요 → 성능 저하
  • 클러스터링 테이블
    • 데이터 물리적 정렬 (예: 저자명 기준)
    • IO 최소화, 조회 성능 향상
    • 단점: 쓰기/수정 비용 큼
  • 해시 클러스터
    • 조회 속도 빠름 (O(1))
    • 단점: 레인지 조회 불가, 충돌 발생 가능
  • 클러스터링 팩터 (Clustering Factor)
    • 인덱스와 실제 데이터의 물리적 거리 척도
    • 공간 지역성 높을수록 성능 우수

 

이번 2회차는 내가 많이 준비하지 못해서 아쉬움이 남는다. 열심히 공부해야지...

 

이 스터디는 내가 집중해서 공부하고 있는 분야뿐만 아니라, DB를 공부하고 계신 분들도 계셔서 완전히 알지는 못해도 자연스럽게 DB에 대한 내용도 함께 접할 수 있다는 점이 좋은 것 같다.

 

그럼 이제 3회차 준비하러 가야지... 다음주도 파이팅