본문 바로가기

전체 글29

[후기] Kafka 한국 사용자 모임 밋업 후기 (23.08.09) 안녕하세요. 황진성입니다. 오늘 Kafka 한국 사용자 모임 밋업에 다녀온 후기를 작성하고 약간의 잡담을 해보겠습니다. 약간의 텍스트 기록과 제 기억으로 작성된 포스트이기 때문에 실제 발표 순서+내용과 다를 수 있습니다. + 2023.08.16 추가 | 발표자료는 여기에서 볼 수 있습니다! 1부: 1000만 회원, MAU 500만을 위한 빅데이터 아키텍처 무신사에서 데이터 엔지니어로 재직 중이신 유환성 님이 발표해 주셨습니다. 내용 정리 발표자님이 입사했던 4년 전, 무신사는 직원이 250명쯤이었다. 최근에는 1400명까지 늘었는데, 구성원뿐만 아니라 무신사 유저도 많이 늘고 거래량도 많이 늘었다. 그 과정에서 데이터 아키텍처 구조 개선이 필요한 순간들이 있었다. 어떤 해결하고자 하는 문제가 발생했을 때.. 2023. 8. 10.
[ELK] Elasticsearch, Logstash, Kibana를 설치+실행하고 간단하게 알아보자 안녕하세요. 황진성입니다. 어쩌다 보니 갓 인싸 개발자 큰돌님과 함께 ELK 스터디를 진행하게 될 기회가 생겼는데, 스터디하면서 알게 된 내용, 실습한 내용, 삽질한 내용을 기록해보려 합니다. ELK란? Elasticsearch, Logstash, Kibana를 묶어서 ELK 혹은 ELK Stack이라고 부릅니다. 하지만 5 버전부터 Beats가 포함되며 Elastic Stack이라고 불립니다. 하지만 저는 ELK가 조금 더 직관적인 것 같아서 ELK라고 부르는 편입니다. 그렇다면 Elasticsearch, Logstash, Kibana, Beats가 뭐하는 서비스인지 궁금해집니다. (이미 너무 유명하니까) 하나씩 간단히만 알아봅시다. Elasticsearch Apache Lucene 기반의 Full-t.. 2023. 7. 23.
[애자일] 애자일 개발을 하고 있지만 공부해 본 적 없는 분들을 위해 안녕하세요. 황진성입니다. 오늘은 애자일 개발과 스크럼에 대해서 알아보겠습니다. 제가 현재 속해있는 팀은 애자일 개발 방식을 실천하고 있습니다. 운이 좋게도 애자일 코치님 계셔서 애자일 개발을 이끌어 주십니다. 처음 이 방식을 접했을 때는 "왜 이렇게까지 복잡하게 일하지?" 라는 생각이 들었지만, 따라갈수록 재밌고 효율적인 방법인 것 같아서 저 또한 매력에 빠졌습니다. 조금은 이론에 가까운 내용이라 지루할 수 있습니다. 하지만 지금 혹은 나중에 애자일 개발을 하는 팀에 조인했을 때, 당황하지 않고 소통에 어려움이 없으시길 바라며 이 글을 작성해봤습니다. 소프트웨어를 개발하는 목적 (이미 그럴 수도 있지만,) 당신을 회사에 소속된 소프트웨어 개발자라고 가정하겠습니다. 소프트웨어를 왜 개발하나요? 회사 입장.. 2023. 7. 2.
[Kotlin] 코루틴 이해를 위한 배경 지식 안녕하세요. 황진성입니다. 최근에 이직을 했고, 합류한 팀에서 비즈니스 로직 틈틈이 코루틴을 사용하는 것을 확인했습니다. 저는 비동기, 병렬 처리 등에 대해서 제대로 공부하거나 사용해 본 적이 없어서 코드를 명확하게 이해하는 것이 힘들었습니다. 단순히 공식 문서에서 예제 한두번 돌려보고 대충 이해하고 쓰기만 했습니다. 꼼꼼히 코드 리뷰를 해주실 때 잘못 사용된 부분을 알려 주시긴 하는데, 언제까지 이렇게 개발할 수 없었습니다. 이 참에 코루틴에 대해 어느 정도 자세히 알아보고자 합니다. 코루틴과 코루틴을 감싸고 있는 이야기를 모두 해볼까 하는데, 여러 개의 포스트로 나눠서 차근차근 정리해 보겠습니다. 1편에서는 "코루틴을 감싸고 있는 이야기"에 집중해서 이야기해보겠습니다. 동시성(Concurrency)과.. 2023. 6. 24.
[NLP] ChatGPT 똑똑하게 활용하기 (ft. Prompt Engineering) 안녕하세요. 황진성입니다. 오늘은 ChatGPT를 조금 더 똑똑하게 활용하는 방법에 대해 알아보겠습니다. 그리고 프롬프트 엔지니어링에 대해 찍먹 해보도록 하겠습니다. ChatGPT란? 기존의 GPT-3가 엄청난 파라미터 개수로 뛰어난 성능을 보여줬는데, 사람의 의도 파악과 윤리 의식 판단 기능이 추가된 InstructGPT 모델이 나왔습니다. ChatGPT는 InstructGPT에 대화형 플랫폼을 함께 탑재해서 출시된 SaaS라고 이해하시면 됩니다. ChatGPT에게 ChatGPT가 뭔지 질문해봤습니다. 언제 활용하는 게 좋을까? 소프트웨어 엔지니어로 일을 하다 보면, 끊임없이 새로운 기술을 학습해야 하는 것은 당연합니다. 그 과정에서 내 궁금증을 해소하기 위해 구글 검색을 많이 하곤 하는데, 이 또한 .. 2023. 4. 15.
[PostgreSQL] 운영 중인 테이블에 인덱스 생성하기 안녕하세요. 황진성입니다. 오늘은 운영 중인 데이터베이스에 인덱스를 생성하는 방법에 대해 알아보겠습니다. 그냥 만들면 되는 거 아냐? 테이블에 인덱스를 생성하면, 인덱스를 구성하는 동안 테이블에 Lock이 걸리게 됩니다. 운영 중인 테이블에 인덱스를 생성하면 인덱스가 생성되는 동안 서비스가 중지될 수도 있습니다. 따라서 인덱스를 생성한다면 신중하게 판단해야 합니다. 일반적으로 운영 중인 테이블에 인덱스를 생성한다면 아래와 같이 생성합니다. 이해를 위해 Pseudo code로 작성했으며, DBMS Vender에 따라 문법이 조금씩 다를 수 있습니다. -- 1. 기존 테이블과 동일한 구조, 데이터를 가진 새로운 테이블을 생성한다. CREATE TABLE new_table_name AS ( SELECT * F.. 2023. 4. 12.
[Spring] RestTemplate 에러 핸들러 커스텀하기 안녕하세요. 황진성입니다. 오늘은 Spring Web에서 제공하는 RestTemplate의 ErrorHandler를 커스텀해보겠습니다. 목적 우리는 RestTemplate으로 클라이언트를 생성해서, 또 다른 서버로 동기(sync) 요청을 보낼 수 있습니다. RestTemplate의 getForEntity 메서드로 GET 요청을 보내면, Response로 받는 JSON을 객체 형태로 변환해서 반환해줍니다. RestTemplate restTemplate = new RestTemplate(); ResponseEntity response = restTemplate.getForEntity( "http://localhost:8080/users/1", User.class ); User user = response.g.. 2022. 7. 10.
[단위 테스트] 단위 테스트란 무엇인가 안녕하세요. 황진성입니다. 이번 글에서는 "단위 테스트 2장"을 읽고 내용 정리와 제 생각을 정리해보겠습니다. 1. 단위 테스트의 정의 이 책에서는 다음 조건들을 모두 만족할 때, 단위 테스트라고 주장합니다. 단위 테스트는, 작은 코드 조각을 검증하고, 빠르게 수행하고, 격리된 방식으로 처리하는 자동화된 테스트다. 1, 2번은 논란의 여지가 없지만, 3번은 논란의 여지가 있습니다. “격리가 무엇인가?” 에서 비롯된 논쟁입니다. 이 논쟁에서 고전파와 런던파가 구분됩니다. 런던파 테스트 대상과 의존성을 분리한다. 그렇기 때문에, 테스트가 실패할 경우 어디서 실패했는지 명확하게 알 수 있다. 테스트 대상을 협력자로부터 격리하는 것을 의미한다. 즉, 모든 의존성을 테스트 대역(test double)로 대체해야 .. 2022. 7. 8.
[단위 테스트] 단위 테스트의 목표 안녕하세요. 황진성입니다. 이번 글에서는 "단위 테스트 1장"을 읽고 내용 정리와 제 생각을 정리해보겠습니다. "단위 테스트"를 배우는 것은, 언어나 프레임워크를 배우는 것과 마찬가지로 하나의 기술을 익히는 것에 불과합니다. 단위 테스트를 작성하는 기술을 익혔다면, 잘 적용해야 합니다. 유지 보수가 필요 없으며 끊임없이 변화하는 요구사항에 유연하게 대응할 수 있는 프로젝트 늘 많은 버그와 유지비로 진행이 점점 느려지는 프로젝트 똑같이 단위 테스트를 적용했다고 하더라도, 단위 테스트를 적용하는 기술의 차이에 따라 1번과 2번으로 나뉘게 됩니다. 1번 프로젝트로 진행되게 하기 위해서는 단위 테스트 기술을 '잘' 익히는 것이 중요합니다. 차근차근 단위 테스트 기술에 대해 알아가 봅시다. 1. 단위 테스트 현황.. 2022. 7. 5.