23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요! <클라우드 네이티브 스프링 인 액션> 도서 스터디 후기입니다:)
저희 스터디는 비대면으로 진행되었어요!
매주 일요일에 디스코드에 모여서 돌아가면서 주제를 발표했습니다.
무단 결석할 경우 벌금 5천원, 무단 지각할 경우 벌금 1천원을 걷기로 했어요.
개발자가 최상의 결과를 얻기 위해 고려해야 할 중요한 요소를 강조하면서 클라우드 애플리케이션의 구축을 돕기 위해 15요소 방법론을 제안했습니다.
15요소 방법론은 코드베이스와 설정 분리, API 우선 설계, 상태를 갖지 않는 프로세스, 동시성 지원, 원격 측정 강화 등을 통해
애플리케이션의 민첩한 배포, 확장성, 환경 간 동일성을 유지하고, 인증 및 승인을 통해 보안을 강화합니다.
또한 로그 처리, 포트 바인딩, 의존성 관리 등 운영 효율성을 높이는 요소를 포함하며, 개발부터 배포까지의 지속적 통합과 협업을 지원합니다.
이 장에서는 REST API를 통해 HTTP로 기능을 제공하는 웹 애플리케이션으로 달성할 수 있는 클라우드 상의 가능성에 대해 살펴봅니다.
그리고 그 과정에서 전통적인 웹 애플리케이션과 클라우드 웹 애플리케이션 간의 중요한 차이점을 살펴봅니다.
3.1 클라우드 네이티브 프로젝트 부트스트래핑
클라우드 네이티브 애플리케이션은 형상 관리 시스템을 통해 하나의 코드베이스로 관리해야 합니다.
이때 각 코드베이스는 여러 환경에 배포할 수 있는 불가변 아티팩트, 즉 build를 생성해야 합니다.
이 불가변 빌드가 코드 수정 없이 각각의 다른 환경에 배포됩니다.
3.2 임베디드 서버로 작업
톰캣과 같은 서블릿 컨테이너에서 실행되는 웹 애플리케리션은 요청당 스레드 라는 모델을 기반으로 요청을 처리합니다.
각 요청에 대해 애플리케이션은 해당 특정 요청을 처리하는 데만 전념할 스레드를 할당하고
요청에 대한 응답이 클라이언트에 반환될 때까지 이 스레드는 오직 그 목적으로만 사용하고 다른 목적으로는 사용하지 않습니다.
3.3 스프링 MVC를 이용한 RESTful 애플리케이션 구축
비즈니스 로직은 다음 세 가지 개념을 중심으로 솔루션을 구축합니다.
Entity: 한 도메인에서 명사를 나타냄. ex) 책
Service: 도메인에 대한 사용 사례를 정의하고 구현함. ex) 카탈로그에 책을 추가
Repository: 도메인 계층으로 하여금 데이터 소스와 독립적으로 데이터에 액세스하기 위한 추상화 계층임.
SaaS의 개발 방법론인 12-factors의 config에 관한 내용은 다음과 같습니다.
4.1. 분리되어야 할 정보
데이터베이스나 다른 백업 서비스를 처리하는 리소스
외부 리소스(S3, Twitter 등)의 인증 정보
각 배포마다 달라지는 값(cononical hostname..)
dev,test,stage,prod의 배포 단계마다 다를 수 있는 어떤 값들
4.2. 설정정보를 저장하면 안되는 곳
code
properties file
build : one build, many deploy니까
app server(jndi database 같은 정보)
4.3. Config 항목 준수 방법
배포 환경(개발/운영)용 설정파일을 작성
Spring Cloud Config 사용
그리고 클라우드 네이티브 애플리케이션의 핵심은 환경이 달라져도, 애플리케이션 빌드가 변경되지 않는 것입니다.
컨테이너 이미지는 여러 명령어 실행 결과물로 구성되며, 각 명령어는 레이어를 형성합니다.
이미지는 읽기 전용 레이어로 구성되며, 수정하려면 새로운 레이어를 추가해야 합니다 (Copy-on-Write 방식).
컨테이너 실행 시 추가되는 마지막 컨테이너 레이어만 쓰기가 가능하며, 이 레이어는 휘발성 데이터만 저장합니다.
6.1. 도커파일 개선 방법
계층화를 활용해 효율적으로 빌드하고 업데이트를 간소화합니다.
변경되지 않는 의존성은 별도의 계층으로 관리하여 성능을 최적화합니다.
루트 권한을 제한하고 최신 이미지를 사용하도록 설정합니다.
취약성 스캔을 자동화하여 보안을 강화합니다.
빌드팩은 일관성, 보안, 성능 면에서 유리하며, 자동화된 컨테이너 생성이 가능합니다.
6.2. 도커 컴포즈(Docker Compose)를 이용한 컨테이너 관리
YAML 파일을 통해 여러 컨테이너를 효율적으로 설정 및 관리할 수 있습니다.
서비스 정의와 라이프사이클을 한곳에서 관리하여 편리성을 제공합니다.
강대훈
데보션 책스터디를 진행한 덕분에 클라우드 네이티브에서의 어플리케이션 개발에 대해 깊이 있게 학습할 수 있어서 좋았고,
스터디원들과 함께 학습한 내용을 공유하며 같은 내용을 여러번 고민하게 되어 좋았습니다.
김나은
클라우드 환경에 대한 스터디를 통해 개념을 정리하고 실무에서의 활용 방안까지 배울 수 있었습니다.
또한 데보션 영분들과 함께 스터디를 진행해 밀리지 않고 꾸준히 공부를 할 수 있었습니다.
이강희
평소 관심이 있었지만 깊이 있게 공부하지 못했던 분야를 데보션영의 도서 지원을 통해 학습할 수 있어 매우 뜻깊었습니다.
단순히 혼자 책을 읽는 데 그치지 않고, 다른 영분들과 스터디를 조직해 돌아가며 발표를 진행할 수 있었던 점이 특히 만족스러웠습니다.
이유빈
어려운 내용임에도 불구하고 훌륭한 스터디원들이 친절하게 설명해주어서 더 잘 수행할 수 있었던 것 같아요.
다양한 분야를 공부해 볼 수 있는 좋은 기회였던 것 같아요.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.