데이터 베이스의 자동증가 값을 기본키로 사용할 수 없을때는? 안녕하세요. 비즈상품 개발팀 권순규 입니다. 작년에 입사한 이후로 매번 주변 동료분들에게 배움을 얻기만 해왔는데, 이번에는 배운 내용을 공유해보고자 합니다. 이제껏 해온 기본키 매핑 엔티티에 기본키를 매핑할때 간편하게 매핑할…
응? 이게 왜 롤백되는거지? 이 글은 얼마 전 에러로그 하나에 대한 호기심과 의문으로 시작해서 스프링의 트랜잭션 내에서 예외가 어떻게 처리되는지를 이해하기 위해 삽질을 해본 경험을 토대로 쓰여졌습니다. 스프링의 트랜잭션의 세부적인 동작방식을 살펴보기 때문에 코드가 많고 설명이 조금 긴…
SQL Server 에게 String 이란? (NVARCHAR 인가 VARCHAR 인가) SQL Server JDBC Driver 를 사용하면서 배운, 그리고 주의해야 할 특징 안녕하세요. 비즈상품개발팀에서 광고시스템을 개발하고 있는 김승영입니다. 현재 광고시스템의 일부분이 Spring…
재해복구(DR)를 위한 오로라 데이터베이스 구성 지난해 11/22 오전에 AWS 서울 리전의 전면 장애가 있었습니다. 서울 리전의 경우 2개의 가용영역으로 분리되어 있으나 장애가 리전 전체에 영향을 미쳤기 때문에 배달의민족을 포함한 많은 업체들의 서비스가 약 84분 동안 서비스를 제공하…
AWS에서 보안 감사 및 이상징후 탐지 Introduction Summary AWS에서는 유용하게 사용 할 수 있는 log들이 있다. 그 중에서도 cloudtrail log를 수집/분석하여 정보보안 및 운영의 효율성을 높이는데에 도움이 되는 기술을 공유하고자 한다. Backbround…
클린 아키텍처와 함께하는 배민앱 (Android) 배민마켓 개발하기 안녕하세요, 배민앱개발팀에서 안드로이드 앱 개발을 하고 있는 강경완입니다. 안드로이드 파트로 온 지 얼마 되지 않아 미션이 떨어졌습니다. 기존에 음식 배달만을 하던 배달의민족 서비스에 배민마켓이라는 새로운 형태의 서비스…
Legacy DB의 JPA Entity Mapping (복합키 매핑 편) 안녕하세요. 우아한형제들에서 배달의민족 서비스의 광고시스템을 개발하고 있습니다. 시스템을 점진적으로 Spring Boot / JPA 기반으로 이관하면서 경험했던 내용을 공유하고자 합니다. Legacy DB의 JPA…
Spring 의 Cache 추상화를 사용하면서, 단건/다건 key 에 대한 동일 저장소 사용하기 들어가며 이전에는 Google 의 Guava 를 이용하여 Local Cache 기능을 구현을 했습니다. ‘guava’ 단순하게 Key/Value 에 대해서 가장 쉽게 사용을 할 수 있는 것중…
React에서 Mobx 경험기 (Redux와 비교기) 안녕하세요 딜리버리플랫폼팀 김찬정입니다. 이 글의 목적 React와 함께 사용하는 State(상태)관리 라이브러리중 가장 많이 사용되고 있는 Redux와 또 다른 라이브러리인 Mobx를 직접 사용하여 개발해 보고 느낀 차이점과 Mob…
우아한형제들 JPA 강의 소감과 적용 사례 우아한형제들에 외부 개발자분들을 초대해서 JPA 기본기를 강의한 소감 배달의민족 내부 시스템 JPA 적용 사례 공유 안녕하세요. 프론트서버개발팀 김영한입니다. 이번에 외부 개발자분들을 초대해서 JPA 강의를 진행한 소감과 우아한형제들이 실제 J…
Spring Rest Docs 적용 안녕하세요? 우아한형제들에서 정산시스템을 개발하고 있는 이호진입니다. 지금부터 정산시스템 API 문서를 wiki 에서 Spring Rest Docs 로 전환한 이야기를 해보려고 합니다. 1. 전환하는 이유 현재 정산시스템은 API 문서를 wiki 로…
기존 Express 서버에 Vue.js 적용해보기 (feat.EJS) 도입 이유 팀에서 쓰는 관리자 페이지에 추가 작업을 할 것이 몇 가지 있었습니다. 반복되는 복잡한 코드와 화면 구조가 바뀔 시 걸리는 작업의 시간 그리고 유지보수 측면의 이유로 인해 많은 고민을 하다 Vue.js 를…
우아한 Developer Relations 두번째 이야기 모든 사람을 대상으로 한 PR(Public Relations)에서 배운, 개발자를 대상으로 한 DR(Developer Relations) 이야기. Developer Relations 지난 4월에 ‘우아한형제들의 Developer…
우아한 파일럿 프로젝트 2기(feat.고독한개발자) 들어가며 안녕하세요. 저는 우아한테크캠프를 통해 우아한형제들에 합류한 배민서버개발팀의 김민지입니다. 이 글을 통해 저희 팀에서 진행하고 있는 신입 교육의 일환인 Show me the code라는 파일럿 프로젝트를 진행한 경험을 공유하고…
파일럿 프로젝트와 함께 우아한개발자 되어가기 들어가며 안녕하세요! 배민서버개발팀 김다인입니다. 지난 10월 신입 개발자로 입사한 후 약 5주간에 걸쳐 파일럿 프로젝트를 진행했는데요, 그동안 제가 경험하고 느낀 것들을 공유해 드리고자 합니다. 시작 설렘 반, 긴장 반으로 입사한 당일, 팀…
프로젝트가 장난이야?! 안녕하세요. 저는 배달의 민족 주문시스템을 개발하고 있는 권용근입니다. (출처 : 타요장난감 타요학교와 꼬마버스타요 버스 친구들:지호토이TV) 저는 개발자의 개인 장난(감)인 프로젝트인 토이 프로젝트에 대해서 이야기해보려고 합니다. 저는 웹 개발 입문과 거의 동시…
배달의민족 앱에 적용된 오프라인 모드에 대하여 안녕하세요. 배민앱개발팀 고명석입니다. 현재 배달의민족 앱에 적용되어 있는 "오프라인 모드"라는 기능에 대해서 설명해보려고 합니다. 오프라인 모드란? "오프라인 모드" 기능이란 배달의민족 앱을 서버 응답이 없는 상황에서도 사용할 수 있게 만…
신규 포인트 시스템 전환기 #2 – 오픈 준비 단계 포인트 시스템 개편기 #2 – 오픈 준비 이 글은 이전편에서 이어집니다. 기존에 프로시저만 수행되던 시스템을 API 기반으로 전환하기 위해서 모든 API는 2개씩 준비해야만 했습니다. - 레거시 프로시저를 랩핑한 API - 신규 도메인…
신규 포인트 시스템 전환기 #1 – 개발 단계 포인트 시스템 개편기 #1 – 개발 안녕하세요? 우아한 형제들에서 결제/정산 (+포인트와 비즈머니) 시스템을 개발하고 있는 이동욱입니다. ‘사내 블로그에 글을 더 쓸 일이 있을줄이야’ 라는 마음으로 VS Code로 글을 쓰고 있습니다. 저는…
Real-time Service Configuration으로 Consul을 신주소 서비스에 적용한 사례 안녕하세요. 배민프론트서버개발팀 박제현입니다. 주소 검색 서비스를 개선하면서 Real-time Service Configuration으로 consul을 적용한 사례를 공유하고자 합니다…
JDBC로 실행되는 SQL에 자동으로 프로젝트 정보 주석 남기기 이 글은 Java기반에서 JDBC와 이를 기반으로 한 Persistence Framework를 이용해 SQL을 실행할 수 있는 개발자를 대상으로 모든 JDBC를 통해 실행되는 SQL 구문에 애플리케이션 정보를 주석으로 넣는…
나를 술푸게 하는 고민들 안녕하세요, 배민프론트서버개발팀의 개그 신동이자 귀염둥이 이신은입니다. 저는 작년 12월 신입 개발자 공채를 통해, 백엔드 개발자로 우아한형제들에 합류했습니다. 취업준비생에서 7개월 차 삐약삐약 병아리개발자가 된 지금까지, 지난 1년을 돌아보며 제가 했던 고민을…
파이썬으로 Linear Regression 해보기 들어가며 안녕하세요. 우아한형제들 데이터서비스팀에서 섹시미 막내를 맡고 있는 김세환입니다. 데이터를 보다보면 예측모델을 만들게 되는 경우가 많은데요, 대부분의 경우 모델을 만들기 위한 함수들이 라이브러리 형태로 구현이 되어있다보니, 이런…
우아한 개발자 경력 공채 우아한형제들/우아한신선들에서 개발자 경력 공채를 진행합니다. 왜 경력 개발자 공채를 진행하는가? 많은 회사들과 마찬가지로, 우아한형제들에서도 개발자 분들을 열심히 채용하고 있습니다. 많은 좋은 분들이 함께 해 주고 계시지만, 사업과 서비스의 성장 속도가 더 빨라…
AWS에서 서버(EC2) 패킷 미러링 하기 Introduction Summary Public cloud의 문제점중 하나는, 가시성 확보가 어렵다 이다. 보안을 위해서 여러 Layer의 가시성 확보가 필요한대, 특히 Network 트래픽 데이터에 대해서는 필수이다. on-premise 환…
라이더스 개발팀 모바일에서 CI/CD 도입 이 글은 CI/CD를 안드로이드에 도입하게 되면서 정리한 내용입니다. 구축 및 운영하고자 하시는 분에게 경험을 공유하고자 합니다. 안녕하세요 라이더스 개발팀 장인수 입니다. 소개 우선 라이더스 개발팀이 하는 일을 소개 합니다. 저희 라이더스 개…
우아한테크캠프를 통해 내가 얻은 것들 안녕하세요! 작년 12월에 우아한형제들에 입사한 신입 개발자 배민프론트개발팀의 박예준입니다! 딱 작년 이맘때에 즈음 우아한테크캠프 지원서를 작성하고 있었는데, 이렇게 기술 블로그에 글을 남기려니 기분이 이상하네요. 2018우아한테크캠프를 앞두고 있습…
배민찬은 Vue를 어떻게 사용하나요? 이 글은 제이쿼리, PHP 기반의 쇼핑몰 서비스에 Vue를 도입한 사례를 정리한 내용입니다. 서비스에 Vue 도입을 고민 중이신 분들을 위해 경험기를 공유합니다. 배경 배민찬은 푸드 커머스 사업에 혁신을 만들어가는 스타트업 서비스다. 우리 개발팀은…
장애와 관련된 XtraBackup 적용기 안녕하세요. 우아한형제들에서 빌링시스템을 개발하고 있는 이주현입니다. 입사한 이래로 2년 가까이 일하며 정말 다양한 문제를 마주하고 해결하며 소중한 경험을 쌓고 있습니다. 그중 얼마 전 MariaDB 백업 방식으로 적용한 XtraBackup에 대…
주소검색서버(woowahan-juso) 개발기(上) 부제: SpringBoot Batch를 이용하여 주소DB 구축하기 안녕하세요 라이더스개발팀 정세빈 입니다 🙂 BROS(Baemin Riders Operating System)에 주소검색을 위한 주소검색서버 개발 및 배포 경험을 공유 드…
Google I/O 2018 에 다녀오다! 들어가며 안녕하세요. 배민서비스개발실 배민프론트개발팀에서 산업기능요원으로 iOS 개발을 하고 있는 강경완입니다. 우아한형제들에서는 iOS 개발을 하고 있지만, GDG (Google Developer Groups) Korea Android 커뮤니…
결제 시스템 성능, 부하, 스트레스 테스트 안녕하세요. 우아한형제들에서 결제시스템을 개발하고 있는 권용근입니다. 입사한 지 4개월 만에, 드디어 우아한형제들 기술 블로그에 글을 남기게 되어 감회가 새롭습니다. 저는 최근 결제 시스템 의 개비를 진행하며 경험한 성능, 부하, 스트레스 테스…
우아한개발자가 되기 위한 우아한테크캠프 우아한(Woowa) 개발자가 되고 싶은 이들을 위한 우아한테크캠프 2기를 소개합니다. 우아한테크캠프 2017 우아한테크캠프는 대학생들의 여름 방학 기간에 맞춰서 2017년에 진행했던 교육형 인턴 과정입니다. 한 달은 정해진 커리큘럼에 따라 개발 관…
Java, max user processes, open files 안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 올해 사내 블로그 포스팅 주제로 Linux의 open files, max user processes 설정에 대해 정리하게 되었습니다. 계기는…
우아한형제들의 Developer Relations 투자가를 대상으로 한 IR(Investor Relations) 이야기가 아닌, 개발자를 대상으로 한 DR(Developer Relations) 이야기. Developer Relations Developer Relations라는 말은 다소…
Hello, Geo-fence! 안녕하세요 라이더스개발팀 박민철 입니다. BROS(Baemin Riders Operating System)에 Geo-fence를 도입한 경험을 적어보겠습니다. (BROS는 라이더를 배차하고 음식을 픽업하여 고객에게 전달하는 서비스를 지원하는 배달 플랫폼…
신입개발자 교육 후기 들어가며 작년 12월 말에 입사한 후 1월부터 9주 동안 진행된 신입 개발자 교육을 마쳤습니다! 교육이 어떤 식으로 진행되었는지, 무엇을 배웠는지 짧게나마 공유해드리고자 합니다. 일정 - 1주차 ~ 2주차: 웹 프론트엔드 학습 - 3주차 ~ 6주차: 웹 백엔드 학습…
Hybrid-Cloud 환경에서 보안인증 준비 하기 들어가며… 지난 2월 오석윤님이 포스팅해주신 [AWS에서 네트워크 공격 자동차단하기]의 Summary에서 내용을 일부 가져오고자 합니다. “Public Cloud 환경에서의 서비스 운영은 Legacy 환경의 IDC 서비스 운영과는 너무…
[번역] SIL(Swift Intermediate Language), 일단 시작해보기까지 이 글은 훌륭한 Swift, iOS 개발자이자 교육자인 Tomohiro Kumagai씨가 qiita에 올리신 글을 허가를 얻어 배포합니다. *(주) 내용은 최대한 정확하게 번역하려 했지만, 문장은…
SIL(Swift Intermediate Language)을 통한 Swift debugging - 이 문제는 이슈 [SR-7249], commit을 통해 해결되었고, swift 4.2 브랜치에 머지 되었습니다. Episode III 몇일 전 그렇게 멀지않은 방이동, 경복궁 건물 6층 배…
쿠버네티스를 이용해 테스팅 환경 구현해보기 실제로 서비스에 도입해보기 전에 쿠버네티스를 유용하게 사용해 볼 수 있는 방법 중에 하나가 아닐까. 시작하며 이 글은 앞으로 우리가 관리하는 서비스(배민찬)의 아키텍처가 컨테이너 기반의 마이크로 서비스를 지향할 것으로 결정한 후 이를 위해 우선…
안정된 의존관계 원칙과 안정된 추상화 원칙에 대하여 Robert C. Martin의 Agile Software Development – Principles, Patterns, and Practices 에서 SDP, SAP 를 정리해보았습니다. 이 글은 기본적으로는 Java와 Spring…
Spock으로 테스트코드를 짜보자 Spock으로 테스트코드를 작성한 경험을 공유합니다. 안녕하세요! 우아한형제들 배달의민족/배민라이더스 주문시스템 팀 정용준입니다. 여러분은 어떻게 테스트 코드를 작성하고 계신가요? 일정 지키기도 힘든데 무슨 테스트코드냐 하시는 분들도 계신가요? 저도 아…
MySQL에서 ‘a’ = ‘a ‘가 true로 평가된다? DB 알못의 어떤 리서치 목차(이 링크는 목차를 링크합니다) 개요 안녕하세요 기계인간 이종립입니다. FC플랫폼개발팀에서 배민찬 백엔드를 개발하고 있습니다. DB알못인 저는 업무 중에 우연히 MySQL에서 'a' = 'a ' 의 결…
AWS에서 네트워크 공격 자동차단 하기 Introduction Summary 최근 Public cloud 시장이 활성화 되면서 많은 기업들이 Cloud 도입을 시작하고 있으며, 한국의 경우 대표적으로 Amazon Web Service(AWS)를 사용하고 있다. 그리고 한국의 Seoul…
내 안의 가짜를 부수고 진짜 사용자를 만나는 방법 시작하며 9월 11일, 공식적으로 배민프레시는 배민찬으로 브랜드명을 바꿨습니다. 신선 커머스에서 반찬 플랫폼으로 변화를 시작합니다. ..그리고 서비스를 만드는 사람으로서 많은 고민이 시작됐습니다. - 반찬 플랫폼이란 무엇일까. - 어떤…
Presto 쿼리 실행계획 겉핥기 들어가며 우리는 여러 가지 이유로, 여러 가지 용도에 사용하기 위해 데이터를 조회합니다. 많은 경우 SQL기반의 데이터 처리 엔진에 SQL 을 사용해서 데이터를 조회하게 됩니다. 이 때, 기본적으로 문법에 맞춰서 데이터를 조회하면 데이터가 잘못 나올 일…
학습에 실패한 이야기 프로그래머에게 지속적인 학습은 기본적으로 갖춰야 할 덕목 중 하나라고 생각합니다. 문제를 해결하는 방법들은 계속 발전하고 변해가며 하나를 배우면 오히려 배울 것이 늘어나는 경험을 항상 합니다. 당장 우아한형제들의 구성원을 봐도 직급이나 연차와 상관없이 아침, 점심시…
우린 Git-flow를 사용하고 있어요 안녕하세요. 우아한형제들 배민프론트개발팀에서 안드로이드 앱 개발을 하고 있는 나동호입니다. 오늘은 저희 안드로이드 파트에서 사용하고 있는 Git 브랜치 전략을 소개하려고 합니다. ‘배달의민족 안드로이드 모바일 파트에서 이렇게 브랜치를 관리하고 있구…
코딩테스트 연기 건 사과 드립니다. 사과 드립니다. 10월 21일 오후 2시에 진행 예정이었던, 신입공채 1차 코딩테스트가 원활하게 진행되지 못하고 연기하게 된 점 사과 드립니다. 우아한형제들은 코딩테스트를 위하여 Codility라는 서비스를 이용하고 있습니다. 이번 신입공채에 굉장히…
자바 직렬화, 그것이 알고싶다. 실무편 자바의 직렬화 기술에 대한 대한 두 번째 이야기입니다. 실제 자바 직렬화를 실무에 적용해보면서 주의해야 할 부분에 대해 이야기해보려고합니다. 자바 직렬화 실제 업무에서 사용해보기 자바 직렬화는 자바 개발자 입장에서는 상당히 쉽고 빠르게 사용할 수…
자바 직렬화, 그것이 알고싶다. 훑어보기편 자바의 직렬화 기술에 대한 대한 이야기입니다. 간단한 질문과 답변 형태로 자바 직렬화에 대한 간단한 설명과 직접 프로젝트를 진행하면서 겪은 경험에 대해 이야기해보려 합니다. 자바 직렬화가 무엇(what)인가요?? - 자바 직렬화란 자바 시스템…
배민 ‘앱 친구’의 스프린트 이야기 📩 다음 릴리즈를 준비할 때가 왔음을 알리는 메일이 도착했네요. 배달의민족 앱 개발자들은 주로 다음 과제와 관련된 메일을 받고 다음 앱 업데이트 준비를 시작합니다. 여러분의 한 단위 앱 업데이트를 위한 과정은 어떻게 시작되시나요? 이터레이션이라고 부르…
데일리 미팅! 플래닝 포커! 회고! 안녕하세요. 저는 우아한형제들 FC플랫폼개발팀에서 서버개발을 하고 있는 이경원입니다. 오늘은 글로 배운 애자일 방법론을 도입하고 진행했던 경험담을 기록하고자 합니다. 사실 저는 애자일 방법론에 대해서 잘 알지 못하고, 제가 도입을 시도한 것도 아닙니다…
실시간 서비스 경험기(배달운영시스템) 경험기 들어가기 앞서 이 글은 신기술 사용기 또는 소개가 아닌 실시간 서비스 즉 배민라이더스 BROS 1.0 을 개발 하면서 겪어왔던 다소 특별한 개발 및 운영 경험기 입니다. BROS 2.0이 나온 상황에서 1.0을 이야기 하는 것이 다소 순서가…
우아한테크캠프: 좋은 개발자가 되고 싶다면 안녕하세요, 지난 8월 31일을 끝으로 우아한테크캠프 – iOS 개발 인턴 과정을 마친 김다인입니다. 두 달동안 진행되었던 인턴십 프로그램을 통해 제가 무엇을 배웠고 경험할 수 있었는지를 공유해드리고자 합니다. 교육형 인턴십 프로그램 우아한테크…
넌 강해졌다, 돌격해! 들어가며 안녕하세요. 우아한 테크캠프 iOS 개발 인턴이었던 김준영입니다. 지난 8월 31일에 우아한 테크캠프를 마쳤습니다. 좋은 책을 다 읽은 것처럼 아쉬움과 기분좋은 여운이 남아있네요. 테크캠프에서 배운 점이 학부에서의 몇년보다 많아서 꼽기 어렵습니다만, 그래…
우아한테크캠프 – 8월의 일기 프로젝트 시작 – 플래닝, 스크럼, 개발 Iteration, Demo와 회고의 반복 유난히도 더웠던 8월. 7월에 배운 교육 과정을 바탕으로 참가자 분들이 스스로 프로젝트를 기획하고 개발하는 실습 과정을 가졌습니다. 이번 프로젝트는 나 혼자 개발이 아닌 함…
Mqtt Stress Test 아래의 링크의 글을 읽고 오시면 이 글을 읽는데 도움이 됩니다.(아마도?) MQTT 적용을 통한 중계시스템 개선 조만간 Mqtt를 사용하는 새로운 업주용 솔루션이 늦어도 올해안에는 출시될 예정입니다. 그동안 RESTFul API 기반의 주문정보 조회시스템은…
Hystrix! API Gateway를 도와줘! 들어가기 안녕하세요. 배민FRESH 서비스를 개발하고 있는 조건희입니다. 오늘은 API Gateway를 사용하면서 겪은 뼈아픈(?) 장애 사례와 해결 과정을 간단히 공유하고자 합니다. 너무 자세하게 쓰지는 않았습니다. 관련된 링크를 충분히…
개발환경을 한 방에! 쉘 스크립트의 힘 들어가며… 안녕하세요. 우아한형제들 서비스개발실 주문시스템개발팀의 라태웅입니다. 어느 개발 조직이건 새로운 사람이 들어오면 그 사람의 PC에 새롭게 개발 환경을 셋팅해야 합니다. 이 때, 저는 세 가지 경우를 경험했는데요. - 문서에 정리된 개발…
MQTT 적용을 통한 중계시스템 개선 어떤 필요에 의해서? 주문중계채널은 개별 디바이스들이 중계서버에 일정시간에 한번씩 API polling을 하는 구조로 운영되고 있습니다. 신규주문 뿐만 아니라 주문의 취소나 상태변경과 같은 정보를 전달 받기 위해 API polling을 수행합니다.…
Elastic Beanstalk Configuration files(.ebextensions) Elastic Beanstalk 사내 서버 인프라가 거의 대부분 AWS 환경으로 넘어가면서 신규로 구축되는 많은 시스템들이 배포 및 확장, 관리등의 용이성 때문에 Elastic Beanstal…
인(人)턴(Turn) – 당신 인생의 전환점 우아한 테크 캠프 흔히 인턴이라고 하면 단기간 회사에서 정식 구성원이 되기 위해 실습 훈련을 밟는 일원을 말합니다. 말이 실습 훈련이지 막상 회사에 가면 짧게는 2개월, 길게는 6개월, 1년 동안 제대로 된 실습 훈련을 받지는 못합니다. 개발…
Swift가 진화하는 법 누구? 안녕하세요. FC 서비스 개발팀에서 육아(샤워 전문)와 iOS 앱(배민프레시) 개발을 담당하고 있는 최광훈입니다. 발단 배민프레시 2.0.0 iOS버전을 무사히 올리고, 아기 샤워를 마치고, 밥을 먹이고, 잠을 재우고(그러나 새벽에 다시 깨었지. 30분을…
로그 데이터로 유저 이해하기 0. 들어가며 우아한형제들 데이터서비스팀 송훈화입니다. 제 업무는 로그를 설계/정의하고 데이터를 분석하는 것입니다. 궁극적으로, 유저가 남긴 로그로부터 유저의 경험을 추정하고 니즈를 파악해 서비스 개선에 필요한 인사이트를 제공하는 것입니다. 이를 위해 로그…
QR코드 속 보물찾기 시작하며 안녕하세요 배라개발팀 박민철 입니다. 배민7주년 행사 중 QR코드를 활용한 보물찾기 이벤트를 진행했던 경험을 이야기를 해보려 합니다. 보물찾기란? 지난 6월 배민7주년 행사가 있었습니다. 배민7주년 행사 컨셉은 미래와 경쟁하자 였고, 미래기술에 대한 브레인…
QA != 통합테스트 안녕하세요. 우아한형제들 품질개선팀에서 근무하고 있는 임선진입니다. 저희 팀에서는 우아한형제들 서비스와 제품에 대한 QA, QC, Testing 업무를 주로하고 있습니다. 이 글은 어찌보면 모두가 알고 있는 QA(Quality Assurance Assistant)에…
똑똑, 프로젝트에 코틀린을 도입하려고 합니다. 이 글은 2017년 4월, 배민프레시에 코틀린 도입하는 과정에서 작성된 글을 바탕으로 재구성되었습니다. 시작하며 2017년 4월, 모바일 플랫폼에서 사용자 경험 극대화를 위한 여정의 첫발로 메인 개편 프로젝트를 시작했습니다. 이 프로젝트의…
이직초보 어느 개발자의 이력서 만들기 안녕하세요 저는 올해 2월부터 우아한형제들의 배라개발팀에서 일하고 있는 구인본입니다. 작년 연말에 잠시 휴식을 가진 후 1월부터 이직을 준비하면서 경험했던 것 중에 이력서를 쓰면서 생각하고 느꼈던 것들을 정리해보았습니다. 이력서는 이렇게 써야 해 저…
아이튠즈커넥트의 신기능 – 자동업데이트 사용자를 대상으로 점진적출시 새로 배포하는 버전에 문제가 있을지도 몰라.. 점진적 출시(phased release)란? 점진적 출시는 2017년 6월 초에 아이튠즈커넥트 내에 새로 생긴 기능입니다. 점진적 출시에 대해 알기 위해서 우선 알아야 할…
Java Enum 활용기 안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 Enum에 관해 알게 된 점들을 정리했음에도 선택한 이유는 제가 Enum을 통…
레거시 코드를 파괴하는 Vim 벽돌 깨기 혼돈! 파괴! Vim! 발단: 레거시를 들여다보던 어느 날 누군가 마음속에서 속삭이더군요. 그래서 정신 나간 Vim 플러그인을 하나 만들어 보았습니다. 플러그인을 설치한 다음 코딩하다 분노가 느껴지는 타임이 도래했을 때 :VimGameCodeBr…
우리가 부르는 시니어 개발자는 누구인가? 살기위한 고민 큰 프로젝트를 마치기 전에 저의 진로를 두고 많은 고민을 하였습니다. 개발을 한지 10여년이 지났고, 짧은 시간안에 저의 Technology Tree에서 큰 가지가 나누어 질 것이라고 생각이 들었기 때문에 이 고민은 자연스럽게 삶에…
배달의민족 안드로이드 7.27.0 장애 회고 시작하며 지난 5월 23일 주소개편과 주문페이지 업데이트를 진행하였다. 기존 주소설정페이지는 외식배달과 일반업소에서 서로 다른 화면을 사용 중이었으나 이번 개편작업으로 통합하게 되었다. 통합하는 과정에서 일반업소에서도 보다 정확한 주소입력을…
배민 API GATEWAY – spring cloud zuul 적용기 서비스를 운영하고 개발하는 팀이라면, LEGACY라는 거대한 괴물이 얼마나 다루기가 힘든 일인지 동감 할 것이다. 이 괴물이 오래되면 될수록, 크면 클수록… 제가 운영하고 개발하고 있는 팀에도 7년 묵은 괴물이 살고…
[모집] 우아한테크캠프 참가자를 모집합니다. 우아한테크캠프 참가자를 모집합니다. 우아한테크캠프 이미 외부에는 우아한형제들에서 인턴을 모집하는 것으로 공고가 나가고, 몇몇 분들이 공유도 해 주신 상황인데요. 이번에 진행하는 행사의 정확한 명칭은, 우아한형제들의 인턴모집이 아니라 우아한형제…
프로세스 개선이 현업에서 정착되려면 이 글은 프로젝트 프로세스의 개선에 관련된 이야기 입니다. 그리고 몇 달전 프로젝트에서 프로세스 구상하고 적용했던 경험들을 이야기하려 합니다. 만약 누군가가 우리팀이 겪은 것과 비슷한 상황에 처해 있다면 이 이야기가 조금이나마 도움이 될 것이라고 기대…
배민 신춘문예 개발기 배민 신춘문예 개발기 인생은 멀리서 보면 희극이고 가까이서 보면 비극이다. ~ Charlie Chaplin 배민신춘문예는 매년 이맘때 진행하는 이벤트로 그 해 마케팅실의 염원을 담아 대규모로 진행하는 이벤트이다. 보통 우리 회사에서는 이벤트를 마케팅실에서 직접 정해…
OSORI 권한관리 플랫폼 Osori 권한관리 플랫폼 오소리란? 인증(Authentication)과 인가(Authorization)중 Authorization부분을 담당하며 권한 관리를 쉽게 해주는 플랫폼으로 UI형태의 관리 페이지와 라이브러리를 제공함으로써 최소한의 비용으로 연동할 수…
AWS KMS를 이용한 암호화 API 구축하기 서버 없이 쉽고 빠르게 암복호화 API서비스를 만들어 봅니다. 지난해 우아한형제들은 정보보호관리체계(ISMS)인증 심사를 준비하며 개인정보 암호화 키를 물리적으로 분리하여 보다 안전하게 관리할 수 있는 AWS Key Management Se…
빌링 시스템 장애, 이러지 말란 Maria~ 우아한 6시 안녕하세요! 우아한형제들에서 빌링/정산 시스템 개발을 맡고 있는 이주현이라고 합니다. 저는 지난 7월 입사한 이래로 배민에서 진행하는 다양한 이벤트에 대응하며 짧지만 강한 경험들을 하고 있습니다. 그중 얼마 전 있었던 빌링 시스템…
소소한 배민라이더스 BROS 2.0 오픈 이야기 용어 설명 배달의민족앱은 배달음식점을 앱을 통해 주문하는 것인데, 배민라이더스 는 그동안 배달을 하지 않던 맛집(?)을 앱으로 주문할 수 있는 서비스입니다. 앱을 주문하는 사용자의 앱을 사용하는 방법은 모두 같지만, 배민라이더스는 배달을…
좌충우돌 실전 프로젝트 개발 스토리 우아한형제들의 배민B2C개발팀에서 서비스 개발을 맡고 있는 이수홍입니다. 이번에 제가 맡게된 통합인증 프로젝트를 진행하면서 좌충우돌 겪었던 이야기를 들려 드리고 싶어서 이렇게 글을 적어봅니다. 입사 후 첫 프로젝트 입사 후 드디어 프로젝트를 맡게 되었…
누군가에게는 빼빼로데이. 누군가에게는? 호기심 가득 11월 11일 빼빼로데이. 많은 인터넷 서비스 회사들이 빼빼로데이를 맞이하여 여러 이벤트를 준비한 것처럼, 배민 또한 이벤트를 준비했습니다. 아침 11시부터 선착순 1,111명에게 11,000원 할인쿠폰을 발급하는 이벤트. 선착순 이벤…
AWS IoT 버튼을 활용하여 차임벨 만들기 우아한형제들 사무실 입구에는 이런 안내문이 붙어 있습니다. 사원증을 깜박하고 출근한 직원들이 문을 두드리면 문 근처의 직원들이 일에 집중하기 힘들다는 것이 그 이유였는데요. 재치있고 재밌게 쓰여 있지만 결국 한줄로 요약하면 ‘문 두드리지 마세…
Sql server 2012 / Event ID 36888 Schannel Error 2016년 10월 정기 점검 데이터서비스팀은 10월 정기점검일을 맞아 메인 서비스 DB로 운영중인 Windows Server 2012 R2, SQL Server 2012 2기를 업데이트 및 리부팅 작업…
9X년생 개발자 모임 참석 후기 9X년생 개발자 모임 5회차 참석 후기입니다 🙂 9X년생 개발자 모임 (9XD) 이번 9X년생 개발자 모임1은 우아한형제들에서 진행이 되어 한 번도 참여해본 적 없던 저도 참석하는 행운을 누렸습니다. 모임은 우아한형제들 키친에서 7시에 개최되는 것이었습니…
다 때가 있다 – 우아한형제들 개발자 모집 <script language="JavaScript" type="text/javascript"> function paragraph_toggle(obj) { if (obj.style.display == 'none') { obj.style.disp…
우아한, WoowahanJS 사람들이 행복해하는 소프트웨어를 만드는 프로그래머가 되는 것을 목표로 살아가는 아들 바보 프로그래머. 우아한형제들에서 웹 프런트앤드 프레임워크, 서비스, 제품 등을 만들고 있습니다. 아마도, 많은 웹 프론트앤드 개발 조직은 나름의 자체 프레임워크이 있을 것입…
Happy Code 사람들이 행복해하는 소프트웨어를 만드는 프로그래머가 되는 것을 목표로 살아가는 아들 바보 프로그래머. 우아한형제들에서 웹 프런트 앤드 프레임워크, 서비스, 제품 등을 만들고 있습니다. 우아한형제들에 입사한 후 다른 회사와 많이 다르게 느껴지는 부분은 자발적 나눔이 참…
쉽고 재밌는 정규식 이야기 PC 주문접수 프로그램에서 개인정보 보호법을 적용하기 위해 취소된 주문의 개인정보를 숨겨야 할 필요가 생겼습니다. ‘앱의 주소검색 모양새를 보아하니 서버에서 두개의 필드를 받아서 처리해야겠군!’ 이라고 생각한 것이 저의 첫번째 착각. 하지만 그런거 없고 주소정…
첫 Java 프로젝트의 생생한 후기 이번에 처음으로 Java 8 + Spring Boot + JPA 를 이용하여 프로젝트를 진행 하였는데, 그 때 느꼈던 점을 공유 하고자 합니다. 첫 자바 프로젝트 시작과 기대 저는 이전 회사에서는 Java 를 사용했었지만, Spring Framewor…
좋은 퍼블리셔란 무엇일까? 지난 주 금요일에 한국인터넷전문가협회에서 주관하는 인터넷 에코 어워드 퍼블리셔 부문에서 개인공로 최우수상을 받았다. 도대체 내가 뭘 해서 상을 받았고 다른 좋은 사람도 많은데 왜 내가 받았을까에 대한 고민을 몇가지 해보다가 이 글을 쓴다. 이 글은 수상후기이기…