전체 글(344)
-
[Go] Ellipsis 의 활용과 주의사항
Go 에서 ... 은 Ellipsis (줄임표) 연산자라고 부른다. JS 에서도 이런 문법이 있던 걸로 기억한다. Ellipsis 연산자의 주요 용도는 두가지 인데 1) 가변인자 매개변수, 2) 슬라이스 확장 정도로 정의할 수 있다. 1. 가변인자 (Variadic Parameters)가변 인자는 함수가 임의의 개수의 인자를 받을 수 있게 하는 기능이다. 예를 들어 int 형 인자를 파라미터로 넘겨야 할 때 한개를 넘기거나, 그 이상의 수를 넘겨야 하는 경우를 생각해보자. 인자의 수가 변하는 경우, 보통 배열을 인자로 받아야 한다고 생각할 수 있지만 ellipsis 를 사용하면 파라미터의 타입을 굳이 배열로 변경할 필요가 없다. 아래 예시를 살펴보자. sum() 함수는 인자로 int 형 ellipsis ..
01:35:10 -
카나리 배포 : 비율 설정하면서 배운 것
[250113]오늘 상용 배포 때 알게 된 카나리 배포 관련 내용을 간략히 기록 카나리 배포카나리 배포의 카나리(Canary) 는 탄광에서 나오는 유독 가스를 사전에 감지하기 위해 광부들이 가스에 민감한 카나리 새를 데리고 갱도를 사전 탐사(?) 하는데서 비롯되어, 다가올 위험을 사전에 알려준다는 의미로 사용된다. 카나리 배포는 새로운 버전의 애플리케이션을 모든 사용자에게 한 번에 릴리즈하지 않고 일부 사용자에게만 먼저 제공하여 점진적으로 롤아웃하는 배포 방식이다. 일부만 릴리즈 된 서버에서 에러가 발생하지 않거나 정상적으로 동작하는 것을 확인한 후에, 개발자는 점진적으로 모든 시스템에 새로운 버전의 애플리케이션을 배포할 수 있다. 좀 더 정리된 말로 카나리 배포는 일부 서버에만 새로운 버전을 배포하고,..
2025.01.13 -
[Go] Pointer 쉽게 이해해보자
목차- Pointer 기본 개념 잡기- Pointer 를 사용하는 이유- Go 는 왜 굳이 포인터를 도입했을까?- 번외) 자바의 포인터는? Pointer 기본 개념 잡기그래서 포인터가 무엇일까? 포인터란 메모리 주소를 저장하는 특별한 변수를 의미한다. 메모리 주소?? 직관적으로 이해되지 않는 문자와 숫자 값을 떠올렸다면 정답이다. 메모리 주소는 컴퓨터의 RAM(Random Access Memory)에서 특정 데이터가 저장된 고유한 위치를 나타내는 숫자값을 의미한다. 개발자가 어떤 변수를 선언하여 값을 할당하면, 변수 데이터는 메모리의 특정 위치에 할당된 값을 저장된다. 즉 해당 변수는 특정 메모리 위치에 할당받은 값을 저장한다. 이 메모리 위치, 즉 메모리 주소를 나타내는 것이 바로 포인터다! 코드로 이..
2025.01.05 -
더 똑똑한 기술 블로그 운영하기 (feat. 카일스쿨)
예상 독자글쓰기의 벽을 마주한 4년차 기술 블로거의 고민과 향후 Action Item 을 읽고 싶은 분카일스쿨의 인프런 "실용주의 기술 블로그 글쓰기" 강의 후기가 궁금하신 분 서론 : 강의 수강 계기기술 블로그를 운영한지 어연 4년차, 관성으로 블로그를 운영하고 있지만 스스로 운영 방식이나 글쓰기 파이프라인에 대해 깊은 고민을 해 본 경험이 적다. 그간 글또 운영 기간에만 글을 발행한 것은 아니니 강제성이 없어도 글은 잘 발행하는 편이라 생각하지만, 그 빈도나 주기가 불규칙하여 스스로 글쓰기 시스템을 만들고 싶었다. 그리하여 시스템 없이 냅다 글 부터 쓰기 바빴던 습관을 조금씩 체계화 하고자 실용주의 글쓰기 강의를 수강하게 됐다. 수강 후 모든 내용을 정리한 것은 아니며, 내가 4년동안 블로그를 운영하..
2024.12.13 -
네 번째 회사에 이르기 까지
2022년 8월 8일은 두 번째 입사 보다 강남 대홍수의 날로 또렷이 기억한다. 물난리 속에 사당에 자리 잡은 고시원으로 몸을 옮겼고, 내 몸 하나 딱 채울 수 있는 작은 침대와 적어도 이 물난리에 쓰러질 일 없는 고시원 천장에 감사하며 서울의 삶을 시작했다. 그게 이토록 지난한 서울살이의 시작일 것이라곤 생각도 못 했다. 2024년 11월 25일, 네 번째 회사의 최종 오퍼 메일을 받았다. 10월 초의 서류 접수를 시작으로 근 2달간의 채용 과정을 마무리할 수 있었다. 다른 회사의 전형은 아직 끝나지 않았지만 오퍼를 받은 회사는 이전부터 관심을 가진 곳이라 최종 선택하게 됐다. 생각보다 이직 기간이 길어지면서 정신적으로 지치는 것도 느껴 여기까지 하는 게 맞다고 생각했다. 2년 전 첫 이직 회고를 작..
2024.11.30 -
Raft 합의 알고리즘
https://hugehoo-blog.vercel.app/blog/DistributedSystems/Raft%20Consensus%20Algorithm https://hugehoo-blog.vercel.app/blog/DistributedSystems/Raft%20Consensus%20AlgorithmRaft 논문을 선택한 이유 작년에 참여한 카프카 소모임에서 zookeeper 대신 kraft 가 등장할 것 이란 얘길 들은적이 있다. 카프카도 kraft도 모르던 시절이라 어떻게 주키퍼를 대체한다는 건지, 막연한hugehoo-blog.vercel.app⬆️ 위 블로그에 내용을 보완하여 새로 작성했습니다. 해당 링크를 누르시면 더 가독성 좋은 아티클을 읽으실 수 있습니다 😃 Raft 논문을 선택한 이유작..
2024.11.09 -
테크 블로그 모아보기 개발 기록 (2) : Go 언어와 서버리스 프레임워크
서론이 글은 Golang 어플리케이션을 Serverless framework 를 이용해 AWS Lambda 에 배포하는 과정을 다룬다.현재 운영중인 사이드 프로젝트(🔗 테크 블로그 모아보기) 는 Go 언어를 기반으로 AWS Lambda(이하 람다)에 배포되어 있다. 처음 람다를 배울 땐 AWS Console 에서 일일이 API Gateway 를 설정하고 Lambda 함수의 코드를 직접 작성한 기억이 나는데, 당시만 해도 간단한 파이썬 함수를 호출하는 정도라 AWS Console 에 코드를 복붙하는 정도로 람다를 맛보기 했다. 하지만 실제로 운영할 애플리케이션 코드는 단순 복사 붙여넣기로 람다에 배포할 수 없었다. 파일 수도 많을 뿐더러 매번 배포할 때 마다 그런 번거로운 일을 할수도 없기 때문이다. ..
2024.10.22 -
테크 블로그 모아보기 개발 기록 (1)
서론글또 4년 차면 글을 쓰는 것뿐만 아니라 좋은 글을 찾아 읽는 것도 즐기게 된다. 여러 회사의 테크 블로그를 자주 챙겨 읽는데 매번 업데이트가 되는지, 안되는지 알 수 없으니 직접 페이지를 방문하는 수밖에 없었다. 카카오페이 같은 경우는 감사하게도 새로운 글이 올라올 때마다 링크드인에 노티를 주지만 그렇다고 모든 회사를 팔로우 할 순 없는 노릇이었다.해결해야 할 문제가 얼마나 고통스러운지, 이걸 해결하면 얼마나 많은 사람들이 편안해지는 지에 따라 문제의 중요성을 파악하곤 하는데, 냉정하게 말해서 직접 블로그를 방문하여 새로운 글을 확인하는 게 그리 고통스러운 일은 아니다. 단지 조금 귀찮았을 뿐.. 그래서 나도 아주 약간의 노력만 들여 이 문제를 조금 편하게 만들어보자는 마음에 🔗 테크 블로그 모아..
2024.09.30 -
[Go] goroutine 과 channel 로 API 실행 시간 개선하기
목차- 서론- 동기식 호출- 비동기 호출 : Goroutine 활용- 비동기 호출 개선 : Channel 활용- 결론 서론여러 테크 기업의 기술 블로그를 읽기 좋아합니다. 다만 매번 여러 블로그 홈페이지를 방문하다 보니 자주 가는 블로그는 따로 모아서 읽고 싶은 생각이 들더라고요. 이를 위해 Go를 활용한 테크 블로그 스크래퍼를 개발하기로 했습니다. 이미 그런 서비스는 많지 않냐고요? 맞습니다. 그래도 한번 직접 해보고 싶었습니다🙃.기업의 블로그들은 다양한 플랫폼을 활용합니다. Medium 부터 자체 블로그를 운영하는 곳까지, 다양한 방식의 기술 블로그를 제공합니다. 각기 다른 형태의 플랫폼을 사용하기 때문에 그에 맞는 스크래핑 방식을 사용해야 합니다. 저는 블로그 플랫폼에 맞는 스크래핑 구현체를 만..
2024.09.13