Spring Statemachine 이론부터 토이 프로젝트까지
약간 특이한 자판기가 있습니다. Nickel(5¢, 센트), Dime(10¢), Quarter(25¢) 세 종류의 동전만 넣을 수 있고, 상품은 사과 주스와 오렌지 주스뿐이며 가격은 각각 30센트입니다. 그리고, 거스름 돈 기능이 없어서 30¢까지만 동전 투입이 가능합니다. 예를 들어, 25¢가 이미 들어있는 상태에서는 Nickel(5¢) 동전만 투입할 수 있습니다. Dime이나 Quarter 동전을 넣는다면 그대로 뱉어냅니다. 이런 자판기를 코드로 어떻게 구현해야 할까요? 객체지향에 익숙한 개발자라면 아래와 비슷한 방식으로 구현할지도 모릅니다. class VendingMachine { int numNickels; int numDimes; int numQuarters; OrangeJuice orangeJ..
AI/MLBackendTools
전체 읽기 →카카오페이
2022-11-03 · 3년 이상 전
주니어 개발자의 오픈소스 활동 이야기
처음 사용해 보는 기술을 이용해 회사 업무를 진행하다 오픈소스에 기여하게 된 경험을 이제 만 1년 정도 된 주니어 서버 개발자의 입장에서 이야기합니다.
BackendCareerTools
전체 읽기 →데브시스터즈
2022-10-24 · 3년 이상 전
게임 서버 개발에 스칼라 사용하기
Scala가 게임 서버 개발에 왜 좋을까요? 그 이유를 알아봅니다.
AI/MLBackendTools
전체 읽기 →데브시스터즈
2022-10-24 · 3년 이상 전
Scala for Game Server Development
Why Scala is a great match for developing game servers.
AI/MLBackendTools
전체 읽기 →Kafka 이벤트 모니터링이란.. (먼산)
안녕하세요. Carbon 팀 안세희입니다. 이 글은 Kafka 이벤트 모니터링을 진행하며 주니어 개발자로서 겪었던 트러블슈팅에 대한 이야기입니다. 여름에 입사하여 또 다른 계절인 겨울이 다가오는 시점에서 지난 미션을 떠올리며 공유드리고자 합니다. 같은 고민을 하시는 개발자분이 계신다면 부족한 내용일지라도 도움이 되었으면 좋겠습니다. 어떤 걸 모니터링해야 했을까? 해당 미션은 결제가 실패한 경우 발행되는 이벤트를 스트리밍 하여 10분 동안 3번 이상 주문에 실패한 구매자를 찾는 것이었습니다. 당시에 실제 운영하는 환경에서 Kafka를 사용해본 경험이 없어 Kafka에 집계와 모니터링을 얹은 보이지 않은 산을 마주한 기분이었습니다. 하지만 모르는 만큼 다양한 방법을 도입할 수 있다는 개발자의 패기로 아래와 ..
BackendDevOpsTools
전체 읽기 →올리브영 선물 픽업 서비스 개발
반갑습니다! 오늘도 올리브영입니다! 안녕하세요. 저는 주문/결제 스쿼드에서 막내를 담당하고 있는 Aaron 입니다. 어느덧 올리브영에서 생활(?) 한지…
BackendToolsUX/UI
전체 읽기 →Java Generic 을 파헤쳐보자 - 활용편
Java Generic 시리즈 마지막 포스팅입니다.이번에는 Java Generic 을 활용하는 여러 가지 상황들에 대해 살펴보겠습니다.이번 포스팅에서도 개념편, 심화편 에서 사용했던 예제를 활용해보겠습니다.public class Electronics { private String manufacturer; public Electronics(String manufacturer) { this.manufacturer = manufacturer; } public String getManufacturer() { return manufacturer; }}public class Tv extends Electronics { private String title; ..
BackendTestingTools
전체 읽기 →컬리는 물류 최적화 문제를 어떻게 풀고 있을까? - 1부
유전 알고리즘 적용을 통한 최적화 사례 소개
AI/MLBackendTools
전체 읽기 →Java의 날짜, 시간에 대한 기본적인 정책
안녕하세요. Seller & SD Engineering 팀의 박명훈입니다. 오늘은 자바의 기본적인 Date와 Time API에 대해서 간략하게 정리합니다. Date와 Time API에 대해서 많이 사용을 하고 있으나 이에 대해 좀 더 상세하고 어떤 경우에 어떤 값을 쓰는지에 대한 고찰이 부족하다고 생각하여, 이에 대해 정리합니다. 기존 Java의 날짜 API의 문제.Java 8 이전에 사용하던 Date 관련 클래스는 Date, Calendar, SimpleDateFormat 등이 있었으나, 많은 문제가 있어 자바 8 버전 이후부터는 새로운 날짜 관련 API를 제공합니다.기존 클래스들의 문제는 다음과 같습니다. 1. 부적절한 클래스와 메서드 이름을 가집니다.Date 클래스의 경우, TimeStamp 방식으..
BackendTestingTools
전체 읽기 →로그인 비밀번호를 지켜라
안녕하세요. SmilePay Engineering 팀 문한국입니다. 이번 글에서는 스마일페이의 보안성 강화를 위하여 로그인 비밀번호 암호화를 도입한 사례를 공유하려고 합니다. 선정 배경스마일페이는 고객의 결제와 관련된 업무를 하다보니 보안을 상당히 중요시 합니다. 그래서 로그인 비밀번호의 경우도 HTTPS 통신을 통한 SSL 보안과 더불어 RSA 암호화를 통해 로그인 비밀번호를 암호화 후 통신하고 있습니다.HTTPS 의 경우 네트워크 구간에서는 비밀번호의 암호화가 이루어지나, 네트워크 전송 전 구간에서의 보안은 취약하였습니다. 아래 그림은 로그인 비밀번호 암호화를 도입하기 전 브라우저 개발자 도구 네트워크 탭을 캡쳐한 것입니다. 로그인 버튼을 눌렀을 때 개발자 도구 네트워크 탭에 찍힌 것과 같이 비밀..
BackendInfraSecurity
전체 읽기 →올리브영 적응기 (a.k.a 회고록)
반갑습니다! 오늘도 올리브영입니다! 반갑습니다! 올리브영 백엔드 개발자 유롱롱입니다! 🐶 띵똥🔔 선물입니다🎁 올리브영은 지금까지와는 다른 Work & Life를 경험해 볼 수 있을 기대감에 도전해보았습니다. 사실,…
BackendCareerCulture
전체 읽기 →지마켓 대기열 시스템 파헤치기
안녕하세요 VIP & Vertical 팀 김윤제입니다.VIP 파트에서 상품 상세 페이지 및 리뷰 업무를 맡고 있습니다.이번 블로깅에서는 Auction, Gmarket에서 사용하고 있는 대기열 시스템인 Redcarpet에 대해 소개하려 합니다. RedcarpetRedcarpet은 Auction, Gmarket의 대기열 시스템으로 일시적으로 많은 트래픽이 발생하는 서비스에과도한 트래픽의 유입을 방지해 주고 시스템을 보호합니다. 대기열 시스템 Redcarpet의 이름은 대형 홀 등의 줄을 서서 기다리는 곳에 깔린 레드카펫에서 유래되었습니다.Redcarpet의 도입이유 Big Smile Day, Big Sale 등의 이벤트 또는 인기 있는 상품에 대해 트래픽이 몰리는 순간이 있습니다. 이렇게 순간적으로 높은 트..
BackendInfraTools
전체 읽기 →올리브영 쿠폰 발급 개선 이야기
안녕하세요! 올리브영에서 쿠폰 Squad에서 Back-end…
BackendTools
전체 읽기 →올리브영 결제 이야기 Part - 2
안녕하세요! 올디브에서 주문결제 관련 업무를 맡은 호랭이아빠 입니다. 오늘은 지난번 우뱅님의 올리브영 결제 이야기 Part-…
BackendTools
전체 읽기 →인증/인가는 어디에 어떻게 구현해야 할까?
안녕하세요 Post-tx & Accounting팀 권우석입니다.최근 온보딩 프로젝트를 함께했던 Shopping Service API팀의 김도훈님의 제안으로 회원가입/로그인 API를 간단하게 구현하는 토이 프로젝트를 진행하고 있는데요. 이번 글에서는 토이 프로젝트를 진행하며 고민했던 아래 주제에 대해 다뤄보려고 합니다. 1. 인증/인가를 어떻게 구현할 것인가?2. 인증/인가 로직을 어디에 구현할 것인가? 인증과 인가란?인증이란 사용자의 신원을 검증하는 프로세스를 뜻합니다. 가장 간단한 예시로는 ID와 PW를 통해 로그인하는 행위를 인증이라 할 수 있죠. 인가는 인증 이후의 프로세스입니다. 인증된 사용자가 어떠한 자원에 접근할 수 있는지를 확인하는 절차가 바로 인가이죠. 로그인을 예시로 들었듯이 거의 모든 ..
BackendSecurity
전체 읽기 →내가 만든 API를 널리 알리기 - Spring REST Docs 가이드편
'추석맞이 선물하기 재개발'에 차출되어 API 문서화를 위해 도입한 Spring REST Docs 를 소개합니다.
BackendTools
전체 읽기 →카카오페이
2022-09-26 · 거의 4년 전
WebFlux와 코루틴으로 BFF(Backend For Frontend) 구현하기
카카오페이 오프라인 결제 신규 서비스인 ‘내 주변 매장 찾기' 서비스를 개발하기 위해 BFF 서버 구조에서 WebFlux, 코루틴으로 비동기 API 서버 개발 경험을 공유합니다.
BackendDevOpsTools
전체 읽기 →컬리 공통 암호화 모듈의 동시성 이슈 해결하기
공통 모듈에서 발생한 동시성 이슈의 해결 과정을 소개합니다.
BackendSecurityTools
전체 읽기 →Netflix Hystrix를 이용한 MSA 회복성 패턴 톺아보기
MSA 환경에서의 장애 양상 우리는 장애를 피할 수 없습니다. 아무리 실력이 좋은 소프트웨어 개발자라 할지라도 완전무결한 시스템을 만들 수 없습니다. 물론 우리도 여러 방법으로 장애에 대응하고 있었습니다. 서버를 클러스터링하여 일부 서버에 문제가 발생하더라도 클라이언트는 정상 동작중인 다른 서버를 이용할 수 있습니다. 인프라를 분산 구축하는 것도 이러한 전통적인 장애 대응방식 중 하나입니다. 우리는 서버 클러스터링, 인프라 분산 구축과 같은 기존의 장애 대응 방식은 시스템의 완전한 실패를 대비하여 설계되었다는 것에 주목해야 합니다. 하드웨어 장비에 문제가 생겨 서버에 전원 공급이 안되거나 자연재해로 인해 데이터 센터의 데이터가 유실된 경우라면 이런 기존의 장애 대응 방식으로 우리는 큰 도움을 받을 수 있..
BackendDevOpsInfra
전체 읽기 →레거시 시스템의 성능과 정합성 두 마리 토끼 잡기
적은 리소스 적당한 효과 개발자는 종종 레거시 시스템이나 코드를 마주할 때가 있습니다. "레거시" 는 양면적이어서 잘 돌아가고 있는 시스템이면서도 앞으로의 요구사항 변경에 수용력이 부족해 보이는 시스템이기도 합니다. 이러한 레거시와의 공존은 필연적이면서도 효과적인 공존을 위한 부단한 아이디어들을 필요로 하기도 합니다. 보통 레거시 시스템을 대할 때면 이런 문장을 머리에 두고 생각합니다. "적은 리소스만 들여서 적당한 효과를 얻을 방법이 없을까?" 항상 이런 접근만이 답이 되진 않지만 레거시 시스템은 우리에게 친절하지만은 않습니다. 조금 까탈스러운 제약이나 조건들을 가지고 있죠. 조금 지난 미션이지만 재미있게 해결했던 사례를 한번 소개하고자 합니다. 레거시 시스템 소개 우리 팀의 주요 역할은 주문 시스템의..
ArchitectureBackendTools
전체 읽기 →