Advanced Search
Search Results
33 total results found
Clean Code
『Clean Code(클린 코드)』은 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 소개하고 있다. 소프트웨어 장인 정신의 가치를 심어 주며 프로그래밍 실력을 높여줄 것이다. 여러분이 노력만 한다면. 어떤 노력이 필요하냐고? 코드를 읽어야 한다. 아주 많은 코드를. 그리고 코드를 읽으면서 그 코드의 무엇이 옳은지, 그른지 생각도 해야 한다. 좀 더 중요하게는 전문가로서 자신이 지니는 가치와 장...
처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영
도커와 쿠버네티스를 활용한 컨테이너 기술의 핵심을 집대성한 실전 입문서다. 컨테이너 가상화 기술의 개념부터 시작해, 도커 기반 애플리케이션 배포와 이미지 생성, 네트워크 구성, 오케스트레이션 시스템 쿠버네티스까지 단계별로 익힐 수 있도록 구성되었다. 초판 출간 이후 변화한 최신 생태계를 반영해 전면 개정/증보되었으며, 컨테이너 개발 경험이 풍부한 저자의 노하우와 현업 사례를 담았기에 초보자부터 중급자까지 모두에게 유용하다.
1장 컨테이너와 도커 기초
2장 컨테이너 배포
3장 실용적인 컨테이너의 구축과 배포
4장 여러 컨테이너의 구성을 통한 애플리케이션 구축
5장 쿠버네티스 입문
6장 쿠버네티스 배포와 클러스터 구축
7장 쿠버네티스 활용
8장 쿠버네티스 애플리케이션 패키징
9장 컨테이너 운영
10장 최적의 컨테이너 이미지 생성과 운영
11장 컨테이너의 지속적 전달
12장 컨테이너의 다양한 활용 방법
1장 깨끗한 코드
1. 📌 핵심 개념 정리 ✅ 요약하기 앞으로 코드가 사라질 가망은 없다. 프로그래밍이란 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업을 말한다. 이러한 이유로 코드의 도움 없이는 요구사항을 상세하게 표현하기 어렵다. 따라서 우리는 좋은 코드와 나쁜 코드를 구분하고 나쁜 코드를 좋은 코드로 바꾸는 실력을 키울 필요가 있다. 나쁜 코드 나쁜 코드가 쌓일수록 팀 생산성은 저하된다. 생산성 증진을 위해 인력을 추가로 투입해도 새 인력은 시스템 설계에 대해...
2장 의미 있는 이름
1. 📌 핵심 개념 정리 ✅ 요약하기 의도를 분명히 밝혀라. 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 만약 주석이 필요하다면 그 이름은 의도를 분명히 드러내지 못한 것이다. 개선 전 int d; // 경과 시간(단위: 날짜) public List<int[]> getThem() { List<int[]> list1 = new ArrayList<int[]>(); for (int[] x : the...
3장 함수
1. 📌 핵심 개념 정리 ✅ 요약하기 작게 만들어라! 함수를 만드는 첫번째 규칙은 작게 만들기다. 일반적으로 함수는 20줄 이하로 작성하고 if/else, while, for문 등에 들어가는 블록은 1줄이어야 한다. 또한 들여쓰기 수준은 1단, 2단을 넘어서면 안 된다. 개선 전 public class OrderProcessor { public void processOrder(Order order) { if (order != null) { ...
4장 주석
1. 📌 핵심 개념 정리 ✅ 요약하기 나쁜 코드에 주석을 달지 마라. 새로 짜라. 브라이언 W. 커니핸, P.J. 플라우거 주석은 나쁜 코드를 보완하지 못한다 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 표현력이 풍부하고 깔끔하고 주석이 거의 없는 코드가 주석이 많은 코드보다 훨씬 좋다. 주석으로 설명할 시간에 코드를 깔끔하게 수정하자. 코드로 의도를 표현하라! 코드만으로 의도를 설명하기 어려운 경우가 존재한다. 많은 ...
5장 형식 맞추기
1. 📌 핵심 개념 정리 ✅ 요약하기 적절한 행 길이를 유지하라 소스 코드의 세로 길이는 얼마나 길어야 적당한가? Junit, FitNesse, testNG, Time and Money, JDepend, Tomcat 등 프로젝트 조사 결과 평균 파일 크기는 약 65줄이다. 프로젝트에서 가장 긴 파일은 400줄이고 짧은 파일은 6줄이다. 여기서 JUnit, FitNesse, Time and Money는 상대적으로 파일 크기가 200줄 정도로 작았다. 코드 길이...
6장 객체와 자료 구조
1. 📌 핵심 개념 정리 ✅ 요약하기 어째서 수많은 프로그래머가 getter/setter를 당연하게 public으로 설정해 변수를 외부에 노출할까? 자료 추상화 변수를 private으로 선언하더라도 각 변수마다 getter/setter를 제공한다면 구현을 외부로 노출하는 셈이다. 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료를 조작할 수 있어야 한다. 개선 전 public class Point { private double x; pri...
7장 오류 처리
1. 📌 핵심 개념 정리 ✅ 요약하기 오류 코드보다 예외를 사용하라 알고리즘과 오류를 처리하는 알고리즘을 분리하기 위해 예외를 사용하라 개선 전 public void shutDown() { DeviceHandle handle - getHandle(DEV1); if (handle != DeviceHandle.INVALID) { ... } } 개선 후 public void shutDown() { try { tryToShut...
8장 경계
1. 📌 핵심 개념 정리 ✅ 요약하기 경계 살피고 익히기 외부 코드를 통합하기 전에 간단한 테스트 케이스를 작성해 외부 코드를 익히자. 짐 뉴커크는 이를 학습 테스트라고 부르는데 학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다. 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다. 학습 테스트는 공짜 이상이다 학습 테스트는 투자하는 노력보다 얻는 성과가 더 크다. 학습 테스트는 패키지가 실제로 예상대로 도는지 검증한다. 사...
9장 단위 테스트
1. 📌 핵심 개념 정리 ✅ 요약하기 TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 깨끗한 테스트 코드 유지하기 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸릴 수 있다. 지저분한 테스트 코드는 개발자 사이에서 점점 큰 불만...
10장 클래스
1. 📌 핵심 개념 정리 ✅ 요약하기 클래스는 작아야 한다! 클래스를 만들 때 가장 중요한 것은 클래스가 맡은 책임을 작게 만드는 것이다. 클래스의 이름은 해당 클래스의 책임을 기술해야 한다. 클래스의 설명은 if, and, or, but을 사용하지 않고 25단어 내외로 가능해야 한다. 메서드의 수가 적어도 좋은 클래스인가? public class SuperDashboard extends JFrame implements MetaDataUser ...
11장 시스템
1. 📌 핵심 개념 정리 ✅ 요약하기 시스템 제작과 시스템 사용을 분리하라 모든 애플리케이션에서 풀어야 할 관심사는 초기화 단계이다. 대다수의 애플리케이션이 초기화 과정 코드를 주먹구구식으로 구현하고 런타임 로직과 마구 뒤섞는다. 예시 public Service getService(){ if (service == null) service = new MyServiceImpl(...); // 모든 상황에 적합한 기본값일까? return...
12장 창발성(創發性)
1. 📌 핵심 개념 정리 ✅ 요약하기 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 강조한 단순한 설계 네 가지 규칙(중요도 순으로 나열됨) 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1: 모든 테스트를 실행하라 설계는 의도한 대로 돌아가는 시스템을 내놓아야 한다. 테스트가 불가능한 시스템은 검증도 불가능하다. 테스트가 가능한 시스템을 만들기 위해 애쓰면 설계...
13장 동시성
1. 📌 핵심 개념 정리 ✅ 요약하기 객체는 처리의 추상화다. 스레드는 일정의 추상화다. 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 결합(Coupling) 을 없애는 전략으로 무엇(what) 과 언제(when) 를 분리하는 전략이다. 스레드가 하나인 프로그램은 디버깅에서 중단점을 찍었을 때 어디서 언제 멈추는 지 확인이 가능하다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 좋아진다. 서블릿에서는 웹 요청이 들어올 때마다 웹 ...
14장 점진적인 개선
1. 📌 핵심 개념 정리 ✅ 요약하기 이 챕터에서는 저자가 겪은 점진적인 개선을 보여주는 사례를 다룬다. main 함수에서 인수 문자열을 다루는 Args 관련 코드를 살펴보자. 간단한 예시 public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); in...
15장 JUnit 들여다보기
1. 📌 핵심 개념 정리 ✅ 요약하기 JUnit 프레임워크 JUnit은 저자가 많지만 켄트 벡과 에릭 감마 두 사람이 아틀란타 행 비행기를 타고 가다 만들었다. 저자가 챕터에서 소개할 코드는 ComparisonCompactor모듈로 문자열 비교 오류를 파악할 때 유용한 모듈이다. 예를 들어 ABCDE, ABXDE를 입력받으면 <...B[X]D...>를 반환한다 ComparisonCompactor 모듈 코드 package junit.framework; pub...
16장 SerialDate 리팩터링
1. 📌 핵심 개념 정리 ✅ 요약하기 첫째 돌려보자 SerialDateTests 클래스는 모든 경우를 점검하지 않는다는 사실이 드러난다. MonthCodeToQuarter 메서드를 전혀 호출하지 않는다. 코드 커버리지 분석 도구인 클로버를 이용해 단위 테스트가 실행하는 코드, 그렇지 않은 코드를 조사한 결과 185개 중 50% 만 실행하고 있었다. 클래스를 절저히 이해하고 리팩터링하려면 높은 테스트 커버리지가 필요하다. 둘째, 고쳐보자 코드의...
17장 냄새와 휴리스틱
1. 📌 핵심 개념 정리 ✅ 요약하기 주석 부적절한 정보 변경 이력과 같은 주석은 적절하지 못하다. 일반적으로 작성자, 최종 수정일, SPR(Software Problem Report) 번호 등과 같은 메타 정보를 주석으로 남긴다. 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. 쓸모 없는 주석 오래된 주석, 엉뚱한 주석, 잘못된 주석은 쓸모가 없다. 쓸모 없어질 주석을 작성하지 않는 것이 가장 좋지만 작성했다면 재빨리 삭제하는 것이 좋다. ...
쿠버네티스란?
📖 주요 내용 쿠버네티스란? 구글의 주도로 개발된 컨테이너 운영 자동화를 위한 컨테이너 오케스트레이션 시스템 컨테이너 오케스트레이션 조작을 위한 API와 CLI 도구가 함께 제공됨 컨테이너 호스트 관리, 서버 리소스의 빈(bin) 상태를 고려한 컨테이너 배치, 스케일링 및 로드 밸런서, 상태 모니터링, 시크릿 관리 등의 기능을 제공 kubernetes는 k8s, kube로 호칭하는 일도 많다. 도커의 번성과 쿠버네티스의 탄생 도커가 이용되기 시작했을 때...
스터디 개요
📖 스터디 도서 처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영 저자: 야마다 아키노리 출판사: 제이펍 (2025년 5월 출간) 가격: 36,000원 목차 📖 CHAPTER 1. 컨테이너와 도커 기초 1.1 컨테이너란? 1.1.1 컨테이너형 가상화 1.1.2 컨테이너 사용 사례 COLUMN 컨테이너의 단점 1.2 도커란? 1.2.1 도커와 Docker, Inc.의 역사 1.2.2 애플리케이션 배포에 초점을 맞춘 도커 1.2.3 도...