Skip to content

카카오 주관 개발자 양성 과정 1기 활동 내역을 아카이브합니다 ✨

Notifications You must be signed in to change notification settings

msung99/kakao-tech-archive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 

Repository files navigation

✨ 카카오테크 부트캠프 아카이브 ✨

카카오테크 부트캠프 1기에서 활동한 내용들을 기록합니다 📝

🎯 현장 중심의 깊이있는 협업 프로젝트

  • 1,2,3차 데모데이 마감기한을 준수하며 기존 레거시 코드를 점진적으로 리팩토링 & 안정적으로 유지.보수하는 경험을 쌓는다.
  • 스프린트 단위로 협업 진행, 플래닝 포커를 통해 태스크 분배 및 KPT 감정 회고 진행
  • 팀원 서로가 태스크를 진행하며 학습하거나 경험한 내용을 글로 공유하며 이해도를 높이는 문화를 만들기 위해, 팀 기술 블로그를 주도적으로 운영
  • 직접 개발한 Gatsby 블로그 오픈소스 프로젝트를 사용하여 팀 기술 블로그를 개설
  • 👥 팀원 구성 : 하온, 리안, 레오, 엘라, 도로시, 민디

✒️ 팀 기술 블로그 백엔드 트러블슈팅 & 프로젝트 관련 학습 내용 정리

백엔드 시리즈 : https://kakaotech-harmony.netlify.app/series/backend-trouble-shooting/

순번 포스트 키워드(Tag)
1 Redis가 제공하는 RedLock 알고리즘 간단히 살펴보기 Redis, 동시성, 분산락, RedLock
2 Redis 분산 락(Distribution Lock)을 구현하여 동시성 해결하기 Redis, 동시성, 분산락
3 Redis Pub/Sub 을 사용한 분산 환경에서 로컬 캐시 동기화 Redis, 캐시, 스프링
4 스프링 페이지네이션에서 발생한 Latency 의 원인과 커버링 인덱스 생성을 통한 문제 해결기 Spring, MySQL, 인덱스
5 MySQL 인덱스 레인지 스캔을 통한 쿼리 성능 개선기 Spring, MySQL, 인덱스
6 MySQL 8.0 레플리케이션 동작 과정과 아키텍처 구성 방식 데이터베이스, 레플리케이션, MySQL
7 트랜잭션내에 커넥션을 점유하는 외부 API 요청 분리를 통한 TPS 개선기 (feat. JPA OSIV) 스프링, HikariCP, JPA, OSIV
8 DB 레플리케이션 환경에서 DataSource 라우팅이 안되는 이슈 해결기 😤 (feat. JPA OSIV) �Spring, OSIV, JPA
9 서버 성능 최적화를 위한 성능 테스트(Performance Test) 환경 구축 스프링, 성능개선
10 스프링 로컬 캐시와 TTL 을 구현한 외부 서빙 API 요청 최적화 캐시, 스프링
11 JPA 비관적 락(Pessimistic Lock) 을 사용한 동시성 이슈 해결기 Spring, 동시성
12 고가용성과 확장성을 확보하기 위한 아키텍처 전략 고가용성, 아키텍처
13 JPA 낙관적 락과 비관적 락으로 엔티티에 대한 동시성 이슈 해결하기 Spring, 동시성
14 HikariCP 와 데이터베이스 커넥션 풀(DBCP) 최적화 고민하기 - 이론편 Spring, HikariCP
15 객체지향 생활 체조 원칙, 견고한 애플리케이션을 만들기 위해 Spring, 객체지향
16 하모니 팀의 Jacoco 도입기 (feat. 테스트 커버리지) Spring, 테스트
17 격리된 테스트(Isolated Test) 구축과 빌드 최적화 여정 - 실전편 Spring, 테스트
18 하모니 팀의 협업 프로세스를 소개합니다 🌈 Git, Git-Flow
19 OAuth 2.0 의 등장배경과 동작 메커니즘 HTTP, 인증/인가, OAuth
20 스프링에서 Argument Resolver 기반 어노테이션으로 인증 책임을 분리해보자! 스프링, Argument Resolver

🎤 Tech Talk 기술 발표 세미나

  • 매주 수요일 2시, 중앙 타운홀에서 진행되는 기술 발표 세미나
  • 발표를 통한 커뮤니케이션, 말하기 소프트 스킬 훈련
  • 기술적 경험을 공유하고, 함께 성장할 수 있는 커뮤니티 형성

✒️ 글쓰기 미션

  • 글쓰기를 통한 커뮤니케이션, 문서화 소프트 스킬 훈련
  • 주기적인 글쓰기를 통한 회고 진행
순번 포스팅 주제
1 ✒️ 카카오테크 부트캠프에서 찾아낸 나만의 효과적인 프로그래밍 학습법
2 ✒️ 팀 프로젝트에서 발견한 진정한 의미의 함께 성장하기

🌱 TDD, OOP, Web/DB 기초

학습 내용 포스팅 정리 시리즈 : https://haon.blog/series/java-객체지향-디자인패턴-학습기록/

  • 자바 언어, 스프링 프레임워크에 대한 기본 문법을 익혀 기초 웹 프로그래밍 역량을 쌓는다.
  • 읽기 좋은 코드를 구현하는 것이 왜 중요한지와 코드를 개선해 읽기 좋은 코드로 변경해 보는 경험을 한다.
  • 상호 리뷰와 지식 공유를 통해 함께 성장한다.
  • 기본 문법을 익힌 역량을 토대로, 1차 팀 프로젝트(7~8월)에서 애플리케이션을 개발한다.
미션 주제 PR & Reviews
Java On Boarding PR-Review
Java & OOP PR-Review
Spring-MVC-1 PR-Review1
Spring-MVC-2 PR-Review15
Spring-MVC-3 PR-Review16
Spring-MVC-4 PR-Review17
Spring-JDBC-1 PR-Review37
Spring-Core-1 PR-Review38
Spring-Core-2 PR-Review39
Spring-Data-JPA-1 PR-Review55
Spring-Data-JPA-2 PR-Review56

🌳 HTTP 웹 서버 Spring MVC 프레임워크 구현하기

시리즈 : https://haon.blog/series/http-웹서버-spring-mvc-프레임워크-구현하기/

  • 현존하는 라이브러리와 프레임워크를 바닥부터 다시 개발해보는 경험을 통한 HTTP, 자바 멀티 쓰레딩, 서블릿, 스프링 프레임워크, JDBC에 대한 깊은 이해
  • DDD를 통해 레거시 코드를 리팩토링 해보는 경험
  • 자바 웹 프로그래밍 Next Step 내의 미션 수행, 개인 스터디로 진행
미션 주제 포스트 정리
HTTP 웹 서버 기초 구현 HTTP 웹 서버를 직접 구현하여 프로토콜 스펙을 이해해보자!
JDBC 라이브러리 구현하기 레거시 DAO 를 리팩토링하며 JDBC 라이브러리 구현하기
@MVC 프레임워크 구현하기 Step 1 AJAX 기반 레거시 MVC 프레임워크 구현하기
@MVC 프레임워크 구현하기 Step 2 어노테이션 기반 Spring MVC 프레임워크 구현하기
@MVC 프레임워크 구현하기 Step 3 어노테이션 기반 DI 컨테이너 프레임워크 구현하기

스터디

🌱 CS Plant Interview

https://github.com/kakaotech-25/cs-plant-interview

  • CS 지식을 공부하고, 모의 기술 면접을 통해 기초 CS 역량을 키우기 위한 스터디

알고리즘 스터디

https://github.com/kakaotech-25/algorithm-study

  • 매주 백준 문제를 풀고 상호 피드백하는 스터디

🖋 블로깅

💡 교육 과정 시작일(2024.07.01)부터 수료일(2024.12.31)까지 약 5달간 총 127개의 포스트를 작성하였습니다. 평균적으로 2일마다 하나의 포스팅을 꾸준히 작성했습니다.

순번 포스트 키워드(Tag)
127 MSA 환경에서 SAGA 패턴과 2PC 패턴를 통해 트랜잭션 일관성 보장하기 MSA, SAGA, 2PC, 보상 트랜잭션
126 확정할 수 없는 모종의 네트워크 에러/지연 문제를 안전하게 서비스하기 MSA, 네트워크
125 토스 SLASH 22, 애플 한 주가 고객에게 전달되기 까지 MSA
124 MSA 기초 MSA
123 카프카(Kafka)의 특징은 무엇이고, 왜 사용하고, 기본 아키텍처는 어떻게 구성될까? 카프카, 메시지 큐
122 [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 10장. 알림 시스템 설계 아키텍처, 가상면접
121 [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 7장. 분산 시스템을 위한 유일 ID 생성기 설계 아키텍처, 가상면접
120 [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 3장. 시스템 설계 면접 공략법 아키텍처, 가상면접
119 LazyConnectionDataSourceProxy 의 커넥션 획득 지연 방법 스프링
118 [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 2장. 계략적인 규모 측정 아키텍처, 가상면접
117 Redis가 제공하는 RedLock 알고리즘 간단히 살펴보기 Redis, 동시성, 분산락, RedLock
116 Redis 분산 락(Distribution Lock)을 구현하여 동시성 해결하기 Redis, 동시성, 분산락
115 토스 SLASH 23, 은행 최초 코어뱅킹 MSA 전환기(feat. 지금 이자 받기) 토스 Slash, MSA
114 MySQL 레플리케이션 바이너리 로그 기록 타입 (Row, Statement, Mixed) 데이터베이스, 레플리케이션
113 글로벌 트랜잭션 (feat. GTID) 데이터베이스, 트랜잭션
112 MySQL 레플리케이션 복제 동기화 방식 (비동기, 반동기) 데이터베이스, 레플리케이션
111 Elastic Search 역 인덱스(Inverted Index) 구조 살펴보기 데이터베이스, 인덱스
110 ✒️ 카카오테크 부트캠프에서 찾아낸 나만의 효과적인 프로그래밍 학습법 회고, 카카오, 카테부
109 Grafana, Prometheus, SpringBoot Actuator 기반 모니터링 환경 구축하기 Grafana, Prometheus, 모니터링
108 [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 제 1장. 사용자 수에 따른 규모 확장성 아키텍처, 가상면접
107 어노테이션 기반 DI 컨테이너 프레임워크 구현하기 스프링, DI
106 지금부터 내가 가져야 할 학습 방향성과 태도 회고
105 데이터베이스 분산 스토리지를 위한 파티셔닝과 샤딩 데이터베이스, 파티셔닝, 샤딩
104 Redis Pub/Sub 을 사용한 분산 환경에서 로컬 캐시 동기화 Redis, 캐시, 스프링
103 스프링 페이지네이션에서 발생한 Latency 의 원인과 커버링 인덱스 생성을 통한 문제 해결기 Spring, MySQL, 인덱스
102 MySQL 인덱스 레인지 스캔을 통한 쿼리 성능 개선기 Spring, MySQL, 인덱스
101 어노테이션 기반 Spring MVC 프레임워크 구현하기 MVC, 스프링
100 ✒️ 팀 프로젝트에서 발견한 진정한 의미의 함께 성장하기 회고, 카테부, 카카오
99 HTTPS 의 SSL 기반 암호화, 복호화 통신 과정은 어떻게 이루어질까? 네트워크, HTTP
98 AJAX 기반 레거시 MVC 프레임워크 구현하기 MVC, JSP, 스프링
97 OSI 7계층의 물리, 데이터 링크 계층(1~2계층) 네트뤄크, OSI
96 OSI 7계층의 네트워크, 전송, 애플리케이션 계층 (3,4,7 계층) 네트뤄크, OSI
95 레거시 DAO 를 리팩토링하며 JDBC 라이브러리 구현하기 JDBC, JdbcTemplate, Dao
94 Nginx로 로드밸런싱 환경을 구축해 트래픽 분산시키기 Nginx, 로드밸런싱
93 프로세스 및 쓰레드 동기화를 위한 여러 상호배제 기법 (mutex, semaphore, monitor) 운영체제
92 스프링부트 애플리케이션 run 메소드가 실행되기까지의 동작원리 톰켓, DispatchverServlet
91 데이터베이스 클러스터링 인덱스와 세컨더리 인덱스 데이터베이스, 인덱스
90 자바 리플렉션 (Java Reflection) 다루기 JAVA, 리플렉션
89 스프링 트랜잭션 동기화와 추상화 (feat. TransactionManager) 데이터베이스, 트랜잭션
88 HTTP 웹 서버를 직접 구현하여 프로토콜 스펙을 이해해보자! HTTP, WAS
87 MySQL 8.0 레플리케이션 동작 과정과 아키텍처 구성 방식 데이터베이스, 레플리케이션, MySQL
86 MySQL 에서 B+ Tree 기반 인덱스로 데이터를 스캔하는 방식 (인덱스 레인지 스캔) 데이터베이스, 인덱스
85 쿼리 튜닝을 위한 HDD 와 SSD 의 순차 I/O 와 랜덤 I/O 데이터베이스, 인덱스
84 트랜잭션의 전파(propagation) 속성과 추상화 인터페이스 데이터베이스, 트랜잭션
83 서블릿 컨테이너의 프론트 컨트롤러 등장 배경, 공통 요청 처리방식 서블릿, 톰켓
82 트랜잭션내에 커넥션을 점유하는 외부 API 요청 분리를 통한 TPS 개선기 (feat. JPA OSIV) 스프링, HikariCP, JPA, OSIV
81 Jenkins 와 Nginx 를 활용한 Blue/Green 배포 환경 구축하기 Jenkins, CI/CD, Nginx, 블루그린
80 Jenkins 의 파이프라인 기반 배포 자동화 환경 구축 구축하기 Jenkins, CI/CD
79 MySQL 네임드 락으로 분산 환경에서의 동시성 이슈를 해결해보자! MySQL, 네임드락, 동시성
78 무중단 배포 아키텍처의 다양한 배포전략 (Blue/Green, Rolling, Canary) 무중단배포, 블루그린, 롤링, 카나리
77 Slf4j MDC(Mapped Diagnostic Context) 로 요청별로 식별 가능한 맥락 남기기 Spring, 로깅
76 DB 레플리케이션 환경에서 DataSource 라우팅이 안되는 이슈 해결기 😤 (feat. JPA OSIV) Spring, OSIV, JPA
75 MySQL 8.0 레플리케이션과 스프링부트 DataSource 라우팅을 통한 부하 분산 Spring, MySQL
74 서버 성능 최적화를 위한 성능 테스트(Performance Test) 환경 구축 스프링, 성능개선
73 스프링 로컬 캐시와 TTL 을 구현한 외부 서빙 API 요청 최적화 캐시, 스프링
72 JPA 비관적 락(Pessimistic Lock) 을 사용한 동시성 이슈 해결기 Spring, 동시성
71 고가용성과 확장성을 확보하기 위한 아키텍처 전략 고가용성, 아키텍처
70 고가용성과 확장성을 위한 데이터베이스 레플리케이션(DB Replication) 고가용성, 아키텍처, 레플리케이션
69 고가용성과 확장성을 위한 데이터베이스 클러스터링(DB Clustering) 고가용성, 아키텍처, 클러스터링
68 JPA 낙관적 락과 비관적 락으로 엔티티에 대한 동시성 이슈 해결하기 Spring, 동시성
67 MySQL 8.0 공유 락(Shared Lock) 과 배타 락(Exclusive Lock) Spring, 동시성, MySQL
66 경쟁 상태의 2가지 패턴 - Read-Modify-Write, Check-Then-Act Spring, 동시성
65 자바 불변 클래스 JAVA
64 데이터베이스 인덱스 B+ Tree 구조는 왜 조회 쿼리 성능이 빠를까? 데이터베이스, 인덱스
63 Redis 를 활용하여 Refresh 토큰 접근속도 개선하기 Redis, 인증/인가
62 자바 객체의 동일성(identity)와 동등성(equality) JAVA, 동일성
61 자바의 EnumMap은 무엇이고, 왜 HashMap 보다 성능이 더 빠른가? JAVA, ENUM, HashMap
60 자바 Enum 타입, 그거 어떻게 사용하는건데 🤷‍♂️ JAVA
59 JDBC 에서 데이터베이스 커넥션 풀 다루기 (feat. JDBC Driver, DataSource, HikariCP) Spring, DBCP
58 HikariCP 와 데이터베이스 커넥션 풀(DBCP) 최적화 고민하기 - 이론편 Spring, DBCP
57 JPA Auditing 으로 엔티티의 생성/수정 시간 자동 추적하기 Spring, JPA
56 JPA 의 등장배경과 SQL 중심적인 개발의 문제점 Spring, JPA
55 객체지향 생활 체조 원칙, 견고한 애플리케이션을 만들기 위해 Spring, 객체지향
54 하모니 팀의 Jacoco 도입기 (feat. 테스트 커버리지) Spring, 테스트
53 코드 커버리지(Code Coverage) 에 대하여 Spring, 테스트
52 격리된 테스트(Isolated Test) 구축과 빌드 최적화 여정 - 실전편 Spring, 테스트
51 격리된 테스트(Isolated Test) 구축과 빌드 최적화 - 이론편 Spring, 테스트
50 하모니 팀의 Rest Docs 와 MockMvc 를 활용한 API 문서 자동화 �Spring, 하모니, Rest Docs
49 자바의 BigDecimal, BigInteger �JAVA, BigDecimal, BigInteger
48 트랜잭션의 격리수준과 각 수준의 문제점과 해결방안 트랜잭션
47 페이징과 세그먼테이션은 어떻게 가상 메모리를 관리할까? OS, 페이징, 세그먼테이션
46 데드락(Deadlock) 의 발생조건과 이를 해결하기 위한 4가지 방안(예방, 회피, 검출, 회복) OS, 데드락
45 하모니 팀의 협업 프로세스를 소개합니다. Git, Git-Flow, 하온
44 OAuth 2.0 의 등장배경과 동작 메커니즘 HTTP, 인증/인가, OAuth
43 Slf4j logback 이란 무엇이며, 왜 로깅을 해야할까? 💁‍♂️ 스프링, Slf4j, 로깅
42 AWS EC2, Nginx 를 활용하여 스프링 애플리케이션 배포하기 배포, Nginx
41 Nginx 기반 HTTPS 프로토콜을 적용하여 서비스 배포하기 Nginx, HTTPS, Certbot
40 RefeshToken 은 AccessToken 의 문제점을 해결하기위해 등장했다 HTTP, 인증/인가
39 제 4장. 결과를 전달하는 HTTP 상태 코드 HTTP
38 TDD(테스트 주도 개발) 와 BDD(행위 주도 개발) 테스트, BDD, TDD
37 Git 브랜치 전략 (Git Flow, Github Flow) Git
36 제 3장. HTTP 정보는 HTTP 메시지에 있다 HTTP
35 제 2장. 간단한 프로토콜 HTTP HTTP
34 제 1장. 웹과 HTTP 는 이렇게 태어났고 성장했다. HTTP
33 생성자 대신 정적 팩터리 메서드 사용을 고려하라 JAVA
32 자바와 커맨드 패턴(Command Pattern) JAVA, 디자인패턴
31 스프링에서 Argument Resolver 기반 커스텀 어노테이션으로 인증 책임을 분리해보자! (vs Interceptor) 스프링, ArgumentResolver
30 팩토리 메소드 패턴 (Factory Method Pattern) JAVA, 디자인패턴
29 자바와 템플릿 메소드 패턴(Template Method Pattern) JAVA, 디자인패턴
28 전략 패턴(Strategy Pattern) JAVA, 디자인패턴
27 싱글톤(SingleTon) 패턴 구현방법 6가지, Bill Pugh Solution JAVA, 디자인패턴
26 DTO(Data Transfer Object) 의 올바른 사용 방식에 대해 JAVA, DTO
25 REST(Representational State Transfer) API 설계원칙 HTTP
24 데이터베이스 트랜잭션(Transaction) 데이터베이스, 트랜잭션
23 대역을 활용한 외부 상황 테스트, Mock 객체의 활용을 어떻게 해야하는데? 🤷‍ TDD, Mockito
22 Mocktio 란 무엇이고, 어떻게 사용하는걸까? TDD, 테스트, Mockito
21 Spring IoC Container 과 스프링 빈(Spring Bean) Spring
20 POJO (Plain Old Java Object) 를 왜 지향해야 하는가? JAVA
19 스프링 컨테이너의 제어의 역전(IoC) 과 의존성 주입(DI) Spring, 디자인패턴
18 내부(inner) 클래스와 익명 클래스 JAVA
17 스프링의 독립적인 계층화 아키텍처 (Layered Architecture) Spring, 디자인패턴
16 자바의 레퍼 클래스 (Wrapper Class) JAVA, equals
15 Object.equals의 일반 규약을 지켜서 재정의하라 Spring
14 DAO 와 Repository 패턴, 차이점은 무엇인가 🤷 Spring
13 자바의 toString 메소드를 올바르게 활용하는 방법에 대하여 JAVA, tostring
12 자바의 멤버 클래스는 되도록 static을 붙여서 정적 멤버 클래스로 만들어라 JAVA
11 테스트 더블 (Test Double) 로 Mocking 하기 테스트
10 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (feat. 싱글톤) JAVA, 싱글톤
9 혼란스러운 단위, 통합, 인수, 시스템 테스트. 명확한 테스트 격리 수준 정리 😵‍💫 테스트
8 간략히 적어보는 카카오테크 1주차 생활 회고 회고
7 자바 String, StringBuilder, StringBuffer 개념 JAVA
6 자바의 Comparator 과 Comparable 인터페이스 JAVA, Comparator, Comparable
5 VO(Value Object) 란 무엇이고, 캡슐화를 통해 얻는 이점은 무엇인가? JAVA, VO
4 자바의 스트림(Stream) 이란 무엇이고, 어떻게 사용하는걸까? JAVA, stream
3 자바 컬렉션(Collection) 의 개념과 종류 JAVA
2 프로그래밍을 공부하며 능동적인 성장을 위한 학습방법 공부법, 회고, 메타인지
1 2024년 카카오테크 코스 최종 합격까지, 상반기 회고 회고, 카카오테크

About

카카오 주관 개발자 양성 과정 1기 활동 내역을 아카이브합니다 ✨

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published