전체 글
-
개발자, 직장인 5년 회고카테고리 없음 2025. 3. 26. 00:38
다듬으려고 초안으로 적어놨던건데 그냥 공개하고 나중에 다시 정리해야겠다. 어짜피 부끄러워하기엔 아무도 안읽을테니 걱정하지말기로오... (주의 : 짱길어요)미루고 미뤄왔던 회고를 해보려고 한다. 기술적인 내용보다는 5년에 걸친 전반적인 인생 회고이다. 나는 21년 1월에 첫 회사에 입사해서 사회생활을 시작했고 22년 6월에 두번 째 회사로 이직을 했다. 이제 만 4년차가 조금 넘은 5년차 백엔드 개발자이다. 이 글을 기록하는 이유는, 나는 일단 기록을 좋아한다. 내 기억은 한계가 있으므로 어딘가에 기록되어 추후에 나의 그때시절 생각이나 배움을 기록을 통해 기억해내고 싶다. 그리고 단순히 기술적 성장을 떠나서, 사회생활을 하면서 해가 지나갈 때 마다 배운 점이나 바뀌는 생각들이 많은데 기록 없이 과거를 돌..
-
[DB] 커버링 인덱스, 실행 계획 Using indexBackend/개발 2023. 9. 11. 01:25
작년에 작성했던 인덱스로 조회 시 개선되는 성능 확인해 보기 에 이어서, 이번에는 실행계획을 확인하고, 커버링 인덱스가 사용되는 쿼리는 어떤 것인지 좀 더 정리해보려고 한다. 기본 개념 및 특징 예전에 정리했던 인덱스 개념 https://github.com/kang-jisu/dev-study-log/blob/main/background/database/%EC%9D%B8%EB%8D%B1%EC%8A%A4.md 인덱스 insert, update, delete (Command)의 성능을 희생하고 select(Query)의 성능을 향상시킨다. 데이터 파일이 있는 디스크에 직접 접근하지 않고, 메모리 저장소 내(인덱스) 안에서 최대한 해결하면서 성능을 개선할 수 있다. 클러스터드 인덱스 물리적으로 데이터가 정렬되어..
-
[Kotlin] Kotest, mockkBackend/공부,개념 2023. 9. 3. 17:50
코틀린 스타일 테스트코드 기존에 사용하던 Junit, AssertJ, Mockito를 이용해서도 테스트코드를 작성할 수 있지만, 중괄호를 활용한 코틀린 dsl 스타일을 적용하기 쉽지 않은데 kotest와 mockk(코틀린에서 사용하는 mocking라이브러리)를 이용하면 Mocking이나 assertion 과정에서 Kotlin dsl이나 infix를 사용해 조금 더 코틀린스럽게 테스트코드를 작성할 수 있다. Kotest 코틀린 진영에서 가장 많이 사용되는 테스트 프레임워크 코틀린 DSL을 활용해 테스트코드를 작성할 수 있다. 다양한 테스트 레이아웃(StringSpec, FunSpec, BehaviorSpec 등 ) 제공 Kotlin DSL 스타일의 Assertion 기능 제공 # kotlin dsl이란 D..
-
[Kotlin] DSL (Domain Specific Language) 이란Backend/공부,개념 2023. 7. 18. 23:41
DSL Domain Specific Language 특정 과업, 영역에 초점을 맞추고 그 영역에 필요하지 않은 기능을 없앤 영역 특화 언어 ex) SQL, 정규식 SQL 문장을 실행할 때 클래스나 함수를 선언하는 것부터 시작하지 않고, 모든 SQL 문장은 첫 키워드가 수행하려는 연산의 종류를 지정하고, 각 연산은 처리해야 할 작업에 맞춰 각각 서로 다른 문법과 키워드를 사용한다. 범용 프로그래밍 언어 컴퓨터로 풀 수 있는 모든 문제를 충분히 풀수있는 기능을 제공 ex) C, C++ 언어 DSL의 특징 선언적 선언적이다 명령적(범용 프로그래밍 언어) 어떤 연산을 완수하기 위해 필요한 각 단계를 순서대로 정확히 기술하는 명령적 언어와는 달리, 선언적 언어는 원하는 결과를 기술하기만 하고 세부 실행은 언어를 ..
-
[Monitoring] APM, Spring Boot Actuator, micrometerBackend/공부,개념 2023. 5. 24. 03:18
서버 모니터링에 사용되는 기술/개념들을 하나씩 찍먹 해보아야겠다. 다른 블로그나 공식 문서에 아주 잘 나와있어서 나는 대략 개념만 이해할 정도로 적으려고 한다 @_ @ APM(Application Performance Management/Monitoring) : 애플리케이션 성능 관리 / 모니터링 어느 구간에서, 어느 사용자가, 어떤 애플리케이션 사용 중 어느 과정에서 문제가 생긴 것인지를 신속하게 탐지하는 것이 중요함 APM 구성 APM은 Agent / Repository Server / Application Server로 구성됨 Agent : 웹 서버에 설치되어 데이터를 수집한 뒤 Repository Server : Agent에서 데이터를 전송하거나 Agent서버로 pull하여 데이터를 받아감 App..
-
Local Cache, Rate LimiterBackend/공부,개념 2023. 4. 15. 21:51
Local Cache vs Global Cache Local Cache 서버마다 캐시 따로 저장 로컬 서버 장비의 리소스 이용 (Memory, Disk) 서버 내에서 작동하므로 속도가 빠름 (네트워크를 타지 않음) 코드 내에서 Map에 넣고 꺼내오는 방식과 유사하다. (직접 로컬캐시를 구현한다면ConcurrentHashMap) 분산 시스템에서 데이터 정합성이 깨질 수 있다. ex) Caffeine Cache, Ehache Global Cache 여러 서버에서 캐시 서버에 접근하여 참조 서버간 데이터 공유 가능 네트워크 트래픽 이용 데이터 분산하여 저장 (Master / Slave, Sharding) ex) Redis 출처 Local Cache, Global Cache 차이 Guava Cache Googl..
-
[Kotlin] Collection, 함수, 람다, 기타 ..Backend/코틀린 2023. 3. 26. 22:15
출처 - 인프런 자바개발자를 위한 코틀린 입문 강의 https://www.inflearn.com/course/java-to-kotlin CH15. 배열과 컬렉션 배열 val array = arrayOf(100, 200) for (i in array.indices) { println("${i} ${array[i]}") } for ((idx, value) in array.withIndex()) { println("${idx} ${value}") } array.plus(300) 인덱스 가져오기 : array.indices 인덱스랑 값 같이 가져오기 : array. withIndex() 배열에 값 추가하기 : array.plus Collection 코틀린은 불변, 가변을 지정해주어야한다. (기본은 불..
-
[Kotlin] 클래스, 상속, 접근제어, objectBackend/코틀린 2023. 3. 20. 17:10
출처 - 인프런 자바개발자를 위한 코틀린 입문 강의 ( 9~14강 ) https://www.inflearn.com/course/java-to-kotlin CH9. 클래스를 다루는 방법 코틀린에서는 필드를 만들면 getter와 setter를 자동으로 만든다. 필드 하나를 프로퍼티라고 부름 코틀린에서는 주 생성자가 필수임 custom getter, setter를 만들 수 있음 생성자 class Person { val name: String, var age: Int, } { init { // 가장먼저호출 if (age < 0) { throw new Exception() } } constructor(name: String): this(name, 1){ println("첫번째 부 생성자") } } 부생성자보다는 ..