더 나은 객체지향 개발을 위한 아이디어: 관심사의 분리부터 제어의 역전까지
안녕하세요, 데이블의 백엔드 엔지니어 송영훈입니다. 오늘은 조금 원론적일지 모르지만 모든 개발자에게 있어 중요한 이야기를 해볼까 합니다. 왜 우리가 쉽고 효율적인 프로그램을 작성해야 하는지를 중심으로, 현대 풀스택 웹 프레임워크들이 강조하는 의존성 주입과 제어의 역전이란 어떤 의미를 가지는지까지 한번 알아보는 시간을 가져보도록 하겠습니다. 좋은 코드란 무엇인가 We love clean code just as much as you do. Simp
ArchitectureBackendMSAPerformanceTools
올리브영 결제 이야기 Part - 1
안녕하세요! 올디브에서 주문/결제 Squad 에서 Back-end…
BackendToolsUX/UI
#02 그 많은 화해 데이터는 어떻게 사용되나요?
화해 화장품 리뷰 데이터 활용_AI 파트 650만 건이 넘는 리뷰 데이터를 더 가치 있는 서비스로 만들기 위해 끊임없이 분석하고 기술을 개발하는 데이터팀 AI 파트의 인터뷰입니다. 리뷰 데이터가 어떻게 유저에게 보다 쉽게 전달되는지 확인해보세요.
AI/MLBackendData Engineering
서버 언어 전환 이야기
안녕하세요. 키친보드 팀의 백엔드 프로그래머 남경호입니다. 최근 스포카는 서울 본사 사무실 이전과 함께 도도 포인트 서비스양도 등 많은 변화의 시간을 가졌습니다. 제가 몸담은 키친보드 팀도 앞으로 더 나은 서비스를 제공하기 위한 정비 기간을 가졌었는데요, 정비 기간에 백엔드 챕터는 현재 운영되고 있는 키친보드 서비스의 서버에 사용된 언어를 변경하기로 하였습니다. 이 글에서는 이 기간 동안 왜, 그리고 어떻게 언어 전환을 이루었는지 이야기해보도록
ArchitectureBackendDevOpsJavaPython
Lunit CARE는 왜 GraphQL을 선택했는가?
ArchitectureBackendGraphQL
뱅크샐러드
2022-04-09 · 4년 이상 전
뱅크샐러드 안드로이드 앱에서 Koin 걷어내고 Hilt로 마이그레이션하기
…
BackendMobileTools
TypeScript 쓰면서 OpenAPI Generator 는 안 쓴다고?
RESTful API 를 이용하는 프론트엔드 개발의 어려움 JavsScript 의 런타임에러가 프론트엔드 개발자들을 오랫동안 괴롭혀 온 것 같이, RESTful API 의 잘못된 사용으로 인한 런타임 오류는 프론트엔드 개발자들의 오랜 골칫거리였습니다. 어쩌면 여전히 많은 개발팀들이 가지고 있는 문제일지도 모르겠습니다. 특별히 API 의 잘못된 사용으로 인한 문제는 기본적으로 프론트엔드 개발자와 백엔드 개발자 사이의 정확하지 않은 커뮤니케이션으로
BackendFrontendToolsTypeScript
그린데이터
2022-04-01 · 4년 이상 전
MongoDB Read/Write Traffic 분산하기
BackendDatabasePerformance
Redshift DW에서 PG DM을 만드는 여정
Redshift to PG Data Convenience Store 개요 매드업은 레버에 안정적으로 데이터를 공급하고 광고사업부에게 데이터를 공급하기 위하여 AWS S3에 데이터를 적재합니다. 완전한 raw data 는 아니지만, 각 매체(Facebook, Google 등) 에서 주는 데이터를 그대로 적재 합니다. 그리고 지금까지 이 S3 파일들을 Athena 라는 서비스로 쿼리하여 사용하였습니다. 하지만 Athena가 비용 대비 속도도 느리고
AWSBackendData EngineeringPerformancePostgreSQL
카카오스타일
2022-03-31 · 4년 이상 전
EKS를 사용해서 어플리케이션 서비스 하기
ECS 아티클에 이어 이번 글에서는 같은 서비스를 EKS로 구축해보도록 하겠습니다. 간단하게 구축하는 것은 eksctl을 쓰면 되지만, 내부 이해를 위해 여기서는 기본부터 구현하도록 하겠습니다.
AWSBackendDevOpsInfraKubernetes
카카오스타일
2022-03-31 · 4년 이상 전
ECS를 사용해서 어플리케이션 서비스 하기
카카오스타일에서는 한동한 ECS를 사용해서 어플리케이션을 서비스했습니다. 현재는 EKS로 전환하고 있지만, ECS가 상대적으로 단순하기 때문에 서비스 구축 개념을 익히는데 좋은 것 같습니다. (간단한 서비스는 굳이 쿠버네티스를 쓸 필요가 없다고 생각합니다) 그런 의미에서 이번 글에서는 ECS를 이용해 단순한 서비스를 오픈하는 과정을 단계별로 설명해보려고 합니다.
AWSBackendDevOpsDocker
asyncio 뽀개기 1 - Coroutine과 Eventloop
이 시리즈의 목적은 asyncio의 컴포넌트들과 활용법을 소개하는 것입니다. 최종적으로는 실제 production에 쓰이고 있는 graceful shutdown을 구현하는 것을 목표로 하며, 그 과정에서 필요한 asyncio 지식을 여러 포스트에 걸쳐 설명할 예정입니다. Python에 국한된 내용도 있지만 코루틴, Future 등은 Asynchronous…
BackendDevOpsPython
DynamoDB를 사용하는 Go 서비스의 응답 시간 최적화 #2 TLS Handshake
안녕하세요. 버즈빌의 데이터 엔지니어 Raf입니다. 이전 포스팅(DynamoDB를 사용하는 Go 서비스의 응답 시간 최적화 #1 AWS Credential Token)에 이어, Go 서비스에서 DynamoDB를 사용하면서 응답 시간 최적화를 시도한 경험을 공유드리도록 하겠습니다. 이번 편은 해결책을 만들지 못했지만, DynamoDB와 Go HTTP Clie…
AWSBackendData EngineeringGoPerformance
플라네타리움
2022-03-29 · 4년 이상 전
세상을 늦게 보기 위해 잃었던 것들
안녕하세요. 플라네타리움 엔진팀에서 Libplanet을 개발하고 있는 이수호입니다. 오늘은 Libplanet을 개발하면서 생겼던 문제 중 블록체인에서 흔히 말하는 확정(Confirmation)으로 인해 생긴 문제와 그 문제를 발견하고 해결하는 과정을 이야기하고자 합니다. 확정(Confirmation) 블록체인에서의 블록은, 어떠한 사건이라고 볼 수 있고 체인은 사건으로 이루어진 일련의 시간 흐름이라고 볼 수 있습니다. 이전의 시간 흐름과는 맞지
BackendData Engineering
검색 데이터 서빙 플랫폼 구축
사용자에게 검색 서비스를 제공하려면 검색 대상이 될 문서에 대한 색인(indexing) 과정과 사용자가 요청하는 쿼리(query), 즉 검색 내용에 대해 일치하는 결과 문서를 제공해야 합니다. 이때 사용자에게는 언제든지 문제 없이 실시간 서비스를 제공해야 합니다. 이러한 검색 서비스를 제공하기 위해 진행했던 개발 과정에 대해 소개합니다. 1. 프로젝트 개요 본 프로젝트는 줌인터넷 신규 입사자로서 진행했던 파일럿 프로젝트로 주요 목적은 검색 대상
BackendDatabaseDevOpsInfraPerformance
DynamoDB를 사용하는 Go 서비스의 응답 시간 최적화 #1 AWS Credential Token
안녕하세요. 버즈빌의 데이터 엔지니어 Raf입니다. 이전 포스팅에서 Go의 HTTP 커넥션 풀에 관해 설명해 드렸습니다 (HTTP connection pool in Go explained). 이 포스팅에서는 Go 서비스에서 HTTP 요청에 대한 Trace를 남겨 DynamoDB 요청의 응답 시간에 큰 영향을 미치는 Credential Token 발급 로직을…
AWSBackendData EngineeringGoPerformance
야놀자클라우드
2022-03-10 · 4년 이상 전
java 코드는 어떻게 자동으로 만들어질까(1/2)
AI/MLBackendJava
상품 브랜드 태그 API 의 과거와 현재
안녕하세요. Seller 팀에서 판매자 대상으로 업무를 진행하고 있는 개발자 박명훈입니다. 오늘은 지난 회고록에서 이야기했던 업무에 대해 좀 더 정리해서 이야기해보려고 합니다. 아직까지 부족한 부분이 많지만 나름의 발전 정도라고 생각해주시면 감사하겠습니다. Gmarket과 Auction에서 쓰는 상품 리스트, 상품 상세 페이지에서 사용하는 브랜딩 서비스에 대해 서술합니다. 저는 뒷단의 백엔드 서비스를 담당하여 개발하였습니다. 브랜딩 정책은 비지니스 룰이 많아서 규칙이 까다롭기 때문에 여러 테이블을 조인해서 기준을 판단하며, 요청마다 이러한 테이블을 조인해서 응답을 주게 되면 이는 곧 성능 저하로 연결됩니다. Gmarket과 Auction의 상품에서 브랜드 정보 요청은 모든 사용자들이 사용하므로 많은 요청..
ArchitectureBackendDatabase