
코루틴이 뭔가요?코루틴은 잠시 중단 가능한 연산의 인스턴스라고 볼 수 있다. 개념적으로 스레드와 비슷한데, 예를 들어 하나의 스레드는 고양이 밥을 주고, 다른 하나의 스레드는 고양이 화장실을 치울 수 있다. 이 작업들은 병렬적으로도 가능하고, 동시적으로도 가능하다.참고: 병렬은 각 작업이 다른 주체에서 실행되는 것이고, 동시는 주체에 상관없이 다른 작업과 함께 수행되는 것을 의미한다.코루틴에서는 이러한 작업 단위를 코드 블록으로 분리하여 동시적 실행이 가능하도록 한다.코루틴의 간단한 동작과정 fun main () = runBlocking{ launch { delay(1000L) println("World!") } println("Hello")}이 코드를 처음 ..

코틀린을 학습하면서, 언어 차원에서 제공하는 비동기 및 동시성 프로그래밍 기능인 코루틴에 대해 궁금해졌다. 그런데 학습을 하려고 검색을 하니, 주구장창 다들 책을 읽다가.. 다른 이야기를 하거나.. 해당 객체가 무슨 의미로 사용하는지 자세한 설명을 빼먹거나.. 읽다가 답답한 마음만이 커져서 학습이 어려웠다. 그래서 그냥 원문을 읽고 궁금한 것들에 대해 추가적인 글을 쓰면서 학습하고자 한다. https://kotlinlang.org/docs/coroutines-guide.html Coroutines guide | Kotlin kotlinlang.org 자 이제 코루틴 여행 시작이닷.

오랜만에 회고를 적는다. 현재 나의 일상은 이러하다. 📌 현재 나의 일상기상 → 이불 개기 → 식사 → 설거지 → 청소 → 빨래 → 세수 → 고양이랑 놀기 → 개발 공부 → 운동 → 샤워 → 취침군대보다 더 규칙적인 백수 생활을 하고 있다. 또한, 꾸준한 학습과 규칙적인 삶은 나도 모르는 사이에 성장을 하게 만들고 있다. (어머니께서 집사둔거같다고 매우 좋아하시는건 안비밀) 📌 주변의 변화와 감사함주변 분들이 하나둘씩 취업하면서, 고마웠던 기억을 담아 편지나 기프티콘을 보내주신다.(간호학과 동기 친구들도 취업할 때 저렇게 연락해줬었는데) 함께 성장했던 동료분들이 좋은 소식을 전해주실 때마다 기분이 좋다.하지만 문득, 스스로에게 이런 질문을 던지게 된다."그럼 지금의 나는 올바르게 성장하고 있..

최근 넥토리얼 최종면접을 봤다. 아직 결과가 나오지 않았지만, 솔직히 떨어졌다고 생각한다.(사실은.. 확신)하지만 약 4년간 프로그래밍에 대해 공부하면서 최고의 기회였다. 왜냐?...이제 그 이야기를 해보려고한다. 최종면접이었기에, 최선을 다해 CS와 포트폴리오 내용들을 다시 복습했지만!!!!!!!!!!!!!!!!나는 엉터리 대답을 했다. 당장에 나에 대한 실망과 면접을 망쳤다는 슬픔을 참고, 면접이 끝나자마자 사옥 1층에서 질문받은 키워드들을 모두 모았다. 이후 약 2주간 해당 키워드를 찾아보고, 교수님께 여쭤보며 공부해봤다.학습을 하면서도, 떨어졌을텐데.. 왜 다시 복기해서 학습을 하고 있나 슬픈 마음을 갖고 있었다.. 그런데...질문에서 뭔가 이상함을 감지했다.CS가 골고루 나왔다고 생각했..

이번에는 간접 쿼리 최적화에 대해 알아볼 예정이다.직접 쿼리 최적화가 많은 문제를 해결하지만, 전부를 해결해 주지는 않는다. 적절하게 인덱스가 되어 있는 쿼리지만 여전히 느린 상황을 접할 수도 있다. 일반적으로는 직접 쿼리 최적화로 충분하나 적은 데이터는 더 나은 성능을 가져오기에 데이터 접근과 스토리지를 줄이는 것이 성능 향상을 위한 기술이라 얘기할 수 있다. 세 가지 비밀MySQL 직접 쿼리 최적화에서 성능을 개선했다고 해도 의도치 않은 결과를 가질 수 있다. 이에 대해 알아보자. 인덱스가 도움이 되지 않을 수 있다. 인덱스 스캔인덱스 스캔은 테이블 행 수가 증가할 수록 인덱스 스캔을 사용하는 쿼리에 대한 응답 시간도 늘어나므로 반드시 지연 시간이 발생한다.이는 테이블 크기와 인덱스 크기가 같이 ..

MySQL은 하드웨어와 최적화, 인덱스를 활용하여 필요한 데이터에 접근할 때 성능을 발휘한다.최적화는 MySQL 측면에서 하드웨어를 효율적으로 활용하게 해주는 다양한 기술과 알고리즘, 데이터 구조를 의미한다.즉, 최적화는 하드웨어 성능에 초점을 맞추는 것이며 하드웨어보다 최적화가 MySQL 성능에 더 많은 영향력을 미치게된다.인덱스가 없는 MySQL 성능은 작은 규모의 데이터만 들어올릴 수 있는 성능으로 제한되지만,균형 잡힌 지렛대에 인덱스를 추가하면 MySQL은 대량의 데이터도 월등한 성능으로 처리한다. 성능 향상과 관련 없는 딴 짓MySQL성능을 향상 시키기 위한 방법을 찾을 때 두 가지 방법이 등장하는데 고사양의 하드웨어를 구매하는 것과 MySQL 튜닝이다.더 좋고 빠른 하드웨어MySQL 성능을 ..

“성능은 곧 쿼리 응답 시간이다.”해당 포스트의 목적은 MySQL 성능을 현저하게 개선하는 것이며, 다양한 측면에서 그 방안을 탐구하고자 한다. MySQL을 관리하는 입장이 아니라 사용하는 입장으로, 최소한의 노력으로 최대한의 성과가 필요한 개발자로서 접근하고자 한다는 것이다. 쿼리 응답 시간(Query Response Time)이란?쿼리 응답 시간은 MySQL이 쿼리를 실행하는데 소요되는 시간이다.소요 시간(timing)은 MySQL이 쿼리를 받을 때 시작되고 결과 세트를 클라이언트에게 전송한 시점까지의 경과 시간을 의미한다.쿼리 응답 시간은 여러 단계와 대기로 구성되지만, 완벽한 상세 명세는 가능하지도 않고 필요하지도 않다.핵심지표(North Star)로서 쿼리 응답 시간솔직히 DB가 빠를 때는 아무..

Spring REST Docs 를 사용하고자 하는 이유에 대해 말씀드리기에 앞서, 사전에 필요한 지식과 선례를 통한 문제 인식을 살펴봅니다. API 문서화 왜 하는 걸까? 표준화 된 API 명세서를 작성할 경우, Front-End, Back-End 개발자 간의 협업을 촉진하며,외부 개발자가 소프트웨어를 쉽게 이해하고 활용할 수 있게 합니다.더불어 정확하고 최신 업데이트 된 API 문서는 시스템의 에러를 빠르게 찾고 해결하는 데 도움이 됩니다 저희들은 이미 협업을 해본 개발자로서, API문서의 필요성과 사용하는 이유를 이미 숙지하고 있다 생각합니다. 그러나 위 설명에 적힌 API 문서 최신 업데이트는 종종 실수하는 요소입니다. (실제로 현재 리펙토링 하고자 하는 기존의 프로젝트의 API 문서도 최신화 ..