본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 12. 1. · 15 Views
실전 데이터 분석 미니 프로젝트
공개 데이터셋을 활용하여 탐색적 데이터 분석부터 시각화까지 전 과정을 실습합니다. 초급 개발자도 따라할 수 있는 실전 데이터 분석 프로젝트입니다.
목차
1. 공개 데이터셋 불러오기
김개발 씨는 데이터 분석에 관심이 생겼습니다. 온라인 강의에서 이론은 배웠지만, 실제 데이터를 어디서 구해야 할지 막막했습니다.
"좋은 데이터셋을 어디서 구할 수 있을까요?" 선배에게 물어보니 의외로 간단한 답이 돌아왔습니다.
공개 데이터셋은 누구나 무료로 사용할 수 있는 정제된 데이터입니다. 마치 도서관에서 책을 빌려 읽는 것처럼, 우리도 공개 데이터셋을 가져와 분석 연습을 할 수 있습니다.
Seaborn, Scikit-learn 같은 라이브러리에는 학습용 데이터셋이 내장되어 있어 별도 다운로드 없이 바로 사용할 수 있습니다.
다음 코드를 살펴봅시다.
import pandas as pd
import seaborn as sns
# 타이타닉 데이터셋 불러오기
titanic = sns.load_dataset('titanic')
# 데이터 기본 정보 확인
print(f"데이터 크기: {titanic.shape}")
print(f"컬럼 목록: {titanic.columns.tolist()}")
# 처음 5개 행 확인
print(titanic.head())
# 데이터 타입 확인
print(titanic.dtypes)
김개발 씨는 데이터 분석을 시작하려고 마음먹었습니다. 하지만 첫 번째 관문에서 막혔습니다.
분석할 데이터가 없었던 것입니다. 회사 데이터는 보안상 사용할 수 없고, 직접 수집하기엔 시간이 너무 오래 걸립니다.
선배 박시니어 씨가 해결책을 알려주었습니다. "공개 데이터셋을 사용하면 돼요.
특히 학습용으로는 라이브러리에 내장된 데이터셋이 제일 편해요." 공개 데이터셋이란 무엇일까요? 쉽게 말해 누구나 자유롭게 사용할 수 있도록 공개된 데이터입니다.
마치 공공 도서관의 책처럼, 원하는 사람은 누구든 가져다 쓸 수 있습니다. 데이터 분석 학습에 가장 많이 쓰이는 데이터셋 중 하나가 바로 타이타닉 데이터셋입니다.
1912년 타이타닉호 침몰 당시 승객들의 정보와 생존 여부가 담겨 있습니다. 생존율 예측이라는 명확한 목표가 있어 분석 연습에 안성맞춤입니다.
Seaborn 라이브러리의 load_dataset 함수를 사용하면 단 한 줄로 데이터를 불러올 수 있습니다. 별도의 파일 다운로드나 경로 설정이 필요 없습니다.
인터넷에 연결되어 있다면 자동으로 데이터를 가져옵니다. 데이터를 불러온 후에는 반드시 기본 정보를 확인해야 합니다.
shape 속성은 데이터의 행과 열 개수를 알려줍니다. 타이타닉 데이터셋은 891명의 승객 정보와 15개의 컬럼으로 구성되어 있습니다.
head 함수는 처음 5개 행을 보여줍니다. 데이터가 어떻게 생겼는지 한눈에 파악할 수 있습니다.
승객의 나이, 성별, 객실 등급 등 다양한 정보가 담겨 있음을 확인할 수 있습니다. dtypes 속성은 각 컬럼의 데이터 타입을 알려줍니다.
숫자인지, 문자인지, 범주형인지 파악해야 적절한 분석 방법을 선택할 수 있습니다. 김개발 씨는 데이터를 불러오고 기본 정보를 확인했습니다.
"생각보다 어렵지 않네요!" 이제 본격적인 분석을 시작할 준비가 되었습니다.
실전 팁
💡 - Seaborn에는 titanic, tips, iris 등 다양한 내장 데이터셋이 있습니다
- Kaggle, UCI ML Repository에서 더 다양한 공개 데이터셋을 찾을 수 있습니다
2. 탐색적 데이터 분석 EDA
데이터를 불러온 김개발 씨는 바로 모델을 만들어보려고 했습니다. 하지만 박시니어 씨가 손을 들어 막았습니다.
"잠깐, 데이터부터 제대로 살펴봤어요? EDA를 건너뛰면 나중에 큰 코 다쳐요."
**EDA(Exploratory Data Analysis)**는 탐색적 데이터 분석의 약자로, 데이터를 본격적으로 분석하기 전에 전체적인 특성을 파악하는 과정입니다. 마치 낯선 도시에 도착해서 지도를 펼쳐보는 것과 같습니다.
어디에 무엇이 있는지, 어떤 길로 가야 할지 먼저 살펴봐야 합니다.
다음 코드를 살펴봅시다.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
# 기술 통계량 확인
print(titanic.describe())
# 결측치 확인
print(titanic.isnull().sum())
# 생존율 분포
print(titanic['survived'].value_counts(normalize=True))
# 성별에 따른 생존율
print(titanic.groupby('sex')['survived'].mean())
# 객실 등급별 생존율
print(titanic.groupby('pclass')['survived'].mean())
박시니어 씨의 말에 김개발 씨는 의아했습니다. "데이터는 이미 봤는데요?" 하지만 head로 몇 줄 본 것과 데이터를 제대로 탐색하는 것은 완전히 다른 일입니다.
EDA는 데이터 분석의 첫 번째이자 가장 중요한 단계입니다. 탐정이 사건 현장을 꼼꼼히 조사하는 것처럼, 우리도 데이터의 구석구석을 살펴봐야 합니다.
describe 함수는 숫자형 컬럼의 기술 통계량을 보여줍니다. 평균, 표준편차, 최솟값, 최댓값, 사분위수 등을 한눈에 확인할 수 있습니다.
나이의 평균이 약 30세라는 것, 요금의 분포가 매우 넓다는 것 등을 파악할 수 있습니다. 데이터 분석에서 가장 골치 아픈 문제 중 하나가 바로 결측치입니다.
**isnull().sum()**은 각 컬럼별 결측치 개수를 알려줍니다. 타이타닉 데이터에서는 나이(age)와 데크(deck) 컬럼에 상당한 결측치가 있음을 발견할 수 있습니다.
value_counts 함수는 각 값의 빈도를 보여줍니다. normalize=True 옵션을 주면 비율로 표시됩니다.
타이타닉 승객 중 약 38%만 생존했다는 사실을 알 수 있습니다. 이제 본격적인 탐색을 시작합니다.
groupby는 데이터를 그룹별로 나눠서 분석할 수 있게 해줍니다. 성별로 나눠보면 흥미로운 패턴이 드러납니다.
여성의 생존율은 약 74%인 반면, 남성은 약 19%에 불과합니다. 객실 등급별로도 살펴봅니다.
1등석 승객의 생존율은 약 63%, 2등석은 약 47%, 3등석은 약 24%입니다. "여성과 아이 먼저"라는 원칙과 함께 사회적 계층도 생존에 영향을 미쳤음을 데이터가 말해주고 있습니다.
김개발 씨의 눈이 반짝였습니다. "데이터만 봐도 이런 이야기가 숨어있었네요!" EDA의 진정한 가치는 바로 이것입니다.
숫자 뒤에 숨은 이야기를 찾아내는 것입니다. 하지만 아직 해야 할 일이 남았습니다.
발견한 결측치를 어떻게 처리할지, 범주형 변수는 어떻게 다룰지 결정해야 합니다. 이것이 바로 다음 단계인 데이터 전처리입니다.
실전 팁
💡 - describe(include='all')을 사용하면 범주형 컬럼의 통계도 볼 수 있습니다
- EDA에서 발견한 패턴을 노트에 기록해두면 나중에 유용합니다
3. 데이터 전처리 실습
EDA를 마친 김개발 씨 앞에는 새로운 과제가 놓였습니다. 나이 컬럼에 빈 값이 177개나 있었고, 범주형 데이터는 컴퓨터가 바로 이해하지 못합니다.
"이 상태로는 분석을 제대로 할 수 없어요. 데이터를 깔끔하게 정리해야 해요."
데이터 전처리는 분석이나 모델링에 적합한 형태로 데이터를 변환하는 과정입니다. 마치 요리하기 전에 재료를 씻고 손질하는 것과 같습니다.
아무리 좋은 재료도 제대로 손질하지 않으면 맛있는 요리가 될 수 없듯이, 데이터도 전처리가 필수입니다.
다음 코드를 살펴봅시다.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
# 결측치 처리: 나이는 중앙값으로 대체
titanic['age'].fillna(titanic['age'].median(), inplace=True)
# 불필요한 컬럼 제거
titanic_clean = titanic.drop(['deck', 'embark_town', 'alive'], axis=1)
# 결측치가 있는 행 제거 (소수인 경우)
titanic_clean = titanic_clean.dropna()
# 범주형 변수 인코딩
titanic_clean['sex_encoded'] = titanic_clean['sex'].map({'male': 0, 'female': 1})
# 결과 확인
print(titanic_clean.isnull().sum())
print(titanic_clean.head())
박시니어 씨가 말했습니다. "실무에서 데이터 분석의 80%는 전처리야.
모델 만드는 건 20%도 안 돼." 처음에는 과장인 줄 알았던 김개발 씨도 직접 해보니 그 말이 진심이라는 걸 알게 되었습니다. 결측치 처리는 전처리의 첫 번째 관문입니다.
결측치를 어떻게 다루느냐에 따라 분석 결과가 크게 달라질 수 있습니다. 크게 세 가지 방법이 있습니다.
첫째, 삭제입니다. 결측치가 있는 행이나 열을 통째로 지우는 방법입니다.
데이터가 충분히 많고 결측치가 무작위로 발생했다면 효과적입니다. dropna 함수를 사용합니다.
둘째, 대체입니다. 결측치를 다른 값으로 채우는 방법입니다.
숫자형 데이터는 평균이나 중앙값으로, 범주형 데이터는 최빈값으로 대체하는 것이 일반적입니다. fillna 함수를 사용합니다.
셋째, 예측입니다. 다른 변수들을 활용해 결측치를 예측하는 고급 방법입니다.
이번 프로젝트에서는 간단한 방법을 사용하겠습니다. 타이타닉 데이터에서 나이 컬럼은 중앙값으로 대체했습니다.
평균보다 중앙값을 선택한 이유가 있습니다. 나이 분포가 완벽한 정규분포가 아니기 때문에, 극단값의 영향을 덜 받는 중앙값이 더 적절합니다.
deck 컬럼은 결측치가 너무 많아 아예 삭제했습니다. 전체 데이터의 77%가 비어있다면, 이 컬럼을 살리려고 노력하는 것보다 제거하는 편이 낫습니다.
다음은 범주형 변수 인코딩입니다. 컴퓨터는 "male", "female" 같은 문자를 직접 계산에 사용할 수 없습니다.
이를 숫자로 바꿔주는 과정이 인코딩입니다. 가장 간단한 방법은 map 함수를 사용하는 것입니다.
딕셔너리를 만들어 각 값에 숫자를 할당합니다. 여기서는 남성을 0, 여성을 1로 매핑했습니다.
전처리를 마친 후에는 반드시 결과를 확인해야 합니다. isnull().sum()으로 결측치가 모두 처리되었는지, head()로 데이터가 의도대로 변환되었는지 점검합니다.
김개발 씨는 깔끔하게 정리된 데이터를 보며 뿌듯함을 느꼈습니다. 이제 본격적인 분석을 위한 준비가 완료되었습니다.
실전 팁
💡 - 결측치 처리 전후로 데이터 분포가 크게 바뀌지 않았는지 확인하세요
- 원본 데이터는 항상 보존하고, 전처리된 데이터는 별도 변수에 저장하세요
4. 시각화로 인사이트 도출
숫자로 된 분석 결과를 팀장에게 보고했더니 이런 피드백이 돌아왔습니다. "그래서 결론이 뭔데요?
한눈에 안 들어오네." 김개발 씨는 깨달았습니다. 아무리 좋은 분석도 시각화 없이는 절반의 가치밖에 없다는 것을.
데이터 시각화는 숫자와 통계를 그래프로 변환하여 패턴과 인사이트를 직관적으로 전달하는 기술입니다. 마치 복잡한 지형을 설명할 때 말로 하는 것보다 지도 한 장이 더 효과적인 것처럼, 데이터도 시각화하면 이해가 훨씬 쉬워집니다.
다음 코드를 살펴봅시다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
titanic = sns.load_dataset('titanic')
# 한글 폰트 설정 (필요시)
plt.rcParams['figure.figsize'] = (10, 6)
# 생존율 막대 그래프
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# 성별 생존율
sns.barplot(x='sex', y='survived', data=titanic, ax=axes[0])
axes[0].set_title('Survival Rate by Sex')
# 객실 등급별 생존율
sns.barplot(x='pclass', y='survived', data=titanic, ax=axes[1])
axes[1].set_title('Survival Rate by Class')
# 나이 분포와 생존 여부
sns.histplot(data=titanic, x='age', hue='survived', bins=30, ax=axes[2])
axes[2].set_title('Age Distribution by Survival')
plt.tight_layout()
plt.savefig('titanic_analysis.png')
plt.show()
"백문이 불여일견"이라는 말이 있습니다. 데이터 분석에서도 마찬가지입니다.
아무리 정확한 수치도 적절한 시각화 없이는 사람들의 마음을 움직이기 어렵습니다. Matplotlib과 Seaborn은 파이썬에서 가장 널리 쓰이는 시각화 라이브러리입니다.
Matplotlib이 기본 그래프 기능을 제공한다면, Seaborn은 그 위에 통계 시각화에 특화된 기능을 더했습니다. 먼저 barplot으로 범주별 생존율을 비교합니다.
성별 생존율 그래프를 보면 숫자로 볼 때보다 차이가 훨씬 극명하게 드러납니다. 여성의 막대가 남성보다 세 배 이상 높습니다.
한눈에 "여성의 생존율이 압도적으로 높다"는 사실을 알 수 있습니다. 객실 등급별 그래프도 마찬가지입니다.
1등석에서 3등석으로 갈수록 막대가 확연히 낮아집니다. "사회적 계층이 생존에 영향을 미쳤다"는 가설이 시각적으로 증명됩니다.
histplot은 연속형 변수의 분포를 보여줍니다. hue 파라미터로 생존 여부에 따라 색을 다르게 표시했습니다.
흥미롭게도 어린 나이대에서 생존자 비율이 높게 나타납니다. "아이들이 먼저 구조되었다"는 역사적 사실과 일치합니다.
subplots는 여러 그래프를 한 화면에 배치할 수 있게 해줍니다. 개별 그래프를 따로 보는 것보다 나란히 비교하면 더 많은 인사이트를 얻을 수 있습니다.
tight_layout 함수는 그래프 간 간격을 자동으로 조정합니다. 제목이나 레이블이 겹치는 문제를 방지해줍니다.
작은 디테일이지만 프로페셔널한 결과물을 만드는 데 중요합니다. 마지막으로 savefig로 그래프를 이미지 파일로 저장합니다.
보고서나 프레젠테이션에 바로 사용할 수 있습니다. 김개발 씨는 만들어진 그래프를 팀장에게 다시 보여드렸습니다.
"오, 이제 확실히 보이네요. 여성, 아이, 상위 계층 순으로 생존율이 높았군요." 시각화의 힘을 실감하는 순간이었습니다.
실전 팁
💡 - 그래프의 제목과 축 레이블은 반드시 명확하게 작성하세요
- 색상은 의미 있게 사용하고, 색맹을 고려한 팔레트를 선택하세요
5. 분석 결과 정리
분석과 시각화를 마친 김개발 씨는 마지막 관문에 도달했습니다. 팀장이 물었습니다.
"그래서 이 분석에서 얻은 결론이 뭐야? 핵심만 정리해서 공유해줘." 데이터 분석의 마무리는 결과를 명확하게 정리하는 것입니다.
분석 결과 정리는 수행한 모든 분석을 종합하여 핵심 인사이트를 도출하고 문서화하는 과정입니다. 마치 탐정이 수사를 마치고 보고서를 작성하는 것처럼, 데이터 분석가도 자신의 발견을 체계적으로 정리해야 합니다.
이 과정이 있어야 분석이 가치를 발휘합니다.
다음 코드를 살펴봅시다.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
# 분석 결과 요약 딕셔너리 생성
analysis_summary = {
'전체_승객수': len(titanic),
'전체_생존율': round(titanic['survived'].mean() * 100, 2),
'여성_생존율': round(titanic[titanic['sex']=='female']['survived'].mean() * 100, 2),
'남성_생존율': round(titanic[titanic['sex']=='male']['survived'].mean() * 100, 2),
'1등석_생존율': round(titanic[titanic['pclass']==1]['survived'].mean() * 100, 2),
'3등석_생존율': round(titanic[titanic['pclass']==3]['survived'].mean() * 100, 2),
}
# 결과 출력
for key, value in analysis_summary.items():
print(f"{key}: {value}%") if '생존율' in key else print(f"{key}: {value}명")
# DataFrame으로 변환하여 저장
summary_df = pd.DataFrame([analysis_summary])
summary_df.to_csv('analysis_summary.csv', index=False)
print("\n분석 결과가 저장되었습니다.")
분석을 아무리 잘 해도 정리하지 않으면 의미가 없습니다. 마치 열심히 공부했는데 시험지에 답을 안 쓴 것과 같습니다.
분석 결과를 명확하게 정리하고 전달하는 것까지가 데이터 분석입니다. 타이타닉 분석에서 발견한 핵심 인사이트를 정리해봅시다.
첫째, 전체 생존율은 약 38%였습니다. 1,500명 이상이 사망한 대참사였습니다.
둘째, 성별이 생존에 가장 큰 영향을 미쳤습니다. 여성 생존율은 74%, 남성은 19%로 약 4배 차이가 났습니다.
"여성과 아이 먼저"라는 원칙이 실제로 지켜졌음을 알 수 있습니다. 셋째, 사회적 계층도 무시할 수 없는 요인이었습니다.
1등석 생존율 63%, 2등석 47%, 3등석 24%로 계층이 낮을수록 생존율도 낮았습니다. 이러한 발견을 코드로 정리하는 것이 중요합니다.
딕셔너리를 사용하면 핵심 지표를 깔끔하게 저장할 수 있습니다. 키-값 쌍으로 무엇이 무엇인지 명확하게 표현됩니다.
정리한 결과는 CSV 파일로 저장합니다. 이렇게 하면 나중에 다시 볼 수도 있고, 다른 분석에 활용하거나 동료와 공유하기도 쉽습니다.
박시니어 씨가 덧붙였습니다. "분석 결과를 정리할 때는 세 가지를 기억해.
무엇을 발견했는지(What), 왜 그런지(Why), 그래서 어떻게 해야 하는지(So What)." 타이타닉 분석을 이 프레임워크에 맞춰보면 이렇습니다. What: 여성과 상위 계층의 생존율이 높았다.
Why: 구조 시 여성과 아이 우선 원칙, 상위 계층의 더 나은 구조선 접근성. So What: 재난 상황에서 사회적 약자를 보호하는 시스템이 필요하다.
김개발 씨는 분석 결과를 정리하면서 데이터 분석의 전체 흐름을 이해하게 되었습니다. 데이터 로드부터 전처리, 분석, 시각화, 결과 정리까지.
이것이 바로 실전 데이터 분석의 전 과정입니다.
실전 팁
💡 - 분석 결과는 항상 재현 가능하도록 코드와 함께 저장하세요
- 비전문가도 이해할 수 있는 언어로 결과를 설명하는 연습을 하세요
6. 다음 단계 ML 입문 준비
프로젝트를 마무리한 김개발 씨에게 박시니어 씨가 물었습니다. "데이터 분석의 기초를 익혔으니, 다음 단계로 넘어갈 준비가 됐어요.
머신러닝 해볼 생각 있어요?" 김개발 씨의 눈이 반짝였습니다.
머신러닝 입문 준비는 기초 데이터 분석에서 예측 모델링으로 나아가는 과정입니다. 마치 수영을 배우고 나서 다이빙에 도전하는 것처럼, 탄탄한 기초 위에 새로운 기술을 쌓아가는 것입니다.
EDA와 전처리 능력은 머신러닝의 필수 토대가 됩니다.
다음 코드를 살펴봅시다.
import pandas as pd
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 데이터 준비
titanic = sns.load_dataset('titanic').dropna(subset=['age'])
features = ['pclass', 'age', 'sibsp', 'parch', 'fare']
X = titanic[features]
y = titanic['survived']
# 학습/테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 간단한 로지스틱 회귀 모델
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# 예측 및 평가
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f"모델 정확도: {accuracy:.2%}")
데이터 분석과 머신러닝은 어디서 구분될까요? 간단히 말해, 분석은 "과거에 무슨 일이 있었는지"를 파악하는 것이고, 머신러닝은 "앞으로 무슨 일이 일어날지"를 예측하는 것입니다.
타이타닉 분석에서 우리는 "여성과 상위 계층의 생존율이 높았다"는 사실을 발견했습니다. 머신러닝은 여기서 한 발 더 나아갑니다.
"새로운 승객의 정보가 주어졌을 때, 이 사람이 생존했을지 예측할 수 있을까?" Scikit-learn은 파이썬에서 가장 많이 쓰이는 머신러닝 라이브러리입니다. 다양한 알고리즘이 일관된 인터페이스로 제공되어 배우기 쉽습니다.
머신러닝의 첫 단계는 피처(feature) 선택입니다. 예측에 사용할 변수를 결정합니다.
객실 등급, 나이, 가족 수, 요금 등을 선택했습니다. 이 선택이 모델 성능에 큰 영향을 미칩니다.
다음은 데이터 분할입니다. 전체 데이터를 학습용과 테스트용으로 나눕니다.
학습 데이터로 모델을 만들고, 테스트 데이터로 성능을 평가합니다. 마치 시험 문제를 풀기 전에 연습 문제로 공부하는 것과 같습니다.
train_test_split 함수가 이 작업을 대신해줍니다. test_size=0.2는 20%를 테스트용으로 떼어둔다는 의미입니다.
random_state는 결과 재현을 위한 시드값입니다. **로지스틱 회귀(Logistic Regression)**는 가장 기본적인 분류 알고리즘입니다.
이름에 "회귀"가 들어있지만 실제로는 분류 문제에 사용됩니다. 생존/사망처럼 두 가지 결과 중 하나를 예측합니다.
모델 학습은 fit 메서드로 합니다. 학습 데이터를 넣으면 모델이 패턴을 학습합니다.
예측은 predict 메서드로 합니다. 테스트 데이터의 생존 여부를 예측합니다.
마지막으로 accuracy_score로 정확도를 측정합니다. 약 70-80%의 정확도가 나옵니다.
첫 번째 모델치고는 나쁘지 않은 성적입니다. 박시니어 씨가 말했습니다.
"이게 시작이야. 피처 엔지니어링을 하고, 다른 알고리즘을 시도하고, 하이퍼파라미터를 조정하면 더 좋은 결과를 얻을 수 있어." 김개발 씨는 데이터 분석에서 머신러닝까지, 긴 여정의 첫걸음을 뗐습니다.
앞으로 배울 것이 산더미지만, 탄탄한 기초가 있으니 두렵지 않습니다. 여러분도 이 프로젝트를 시작으로 데이터 분석의 세계에 발을 들여보세요.
실전 팁
💡 - 복잡한 모델보다 간단한 모델로 시작해서 점진적으로 개선하세요
- Kaggle의 타이타닉 경진대회에 참여해서 실력을 시험해보세요
이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!
댓글 (0)
함께 보면 좋은 카드 뉴스
Helm 마이크로서비스 패키징 완벽 가이드
Kubernetes 환경에서 마이크로서비스를 효율적으로 패키징하고 배포하는 Helm의 핵심 기능을 실무 중심으로 학습합니다. Chart 생성부터 릴리스 관리까지 체계적으로 다룹니다.
보안 아키텍처 구성 완벽 가이드
프로젝트의 보안을 처음부터 설계하는 방법을 배웁니다. AWS 환경에서 VPC부터 WAF, 암호화, 접근 제어까지 실무에서 바로 적용할 수 있는 보안 아키텍처를 단계별로 구성해봅니다.
AWS Organizations 완벽 가이드
여러 AWS 계정을 체계적으로 관리하고 통합 결제와 보안 정책을 적용하는 방법을 실무 스토리로 쉽게 배워봅니다. 초보 개발자도 바로 이해할 수 있는 친절한 설명과 실전 예제를 제공합니다.
AWS KMS 암호화 완벽 가이드
AWS KMS(Key Management Service)를 활용한 클라우드 데이터 암호화 방법을 초급 개발자를 위해 쉽게 설명합니다. CMK 생성부터 S3, EBS 암호화, 봉투 암호화까지 실무에 필요한 모든 내용을 담았습니다.
AWS Secrets Manager 완벽 가이드
AWS에서 데이터베이스 비밀번호, API 키 등 민감한 정보를 안전하게 관리하는 Secrets Manager의 핵심 개념과 실무 활용법을 배워봅니다. 초급 개발자도 쉽게 따라할 수 있도록 실전 예제와 함께 설명합니다.