본문 바로가기

반응형

전체 글

(643)
2023년 회고 나도 개발자가 맞을까? 카카오에 입사하고 빌링이라는 시스템을 구축하게 된지 몇해가 지나고… PG라는 말을 들어본적이 있는가? PaymentGate 라고 하는데 우리가 쌀국수집에서 쌀국수를 먹고 계산을 하고 영수증을 받으면 이니시스라는 문구를 본적이 있을것이다. 이게 PG다. 즉 카드로 결제하면 그 정보를 가지고있다가 가맹점에게 돈을 주는 시스템이다. 이때 정보를가지고 돈으로 바꿔주는 것을 정산이라고 한다. 그래서 너는 뭐하는데?돈을 벌수있게 해주는 서비스를 만든다. 서비스를 만들고 돈을 벌기 위해서는 빌링시스템이 필요하다. 빌링시스템이란. 내가 컴퓨터로 돈을 벌고싶으면 필요한 시스템인데 한마디로 결제 시스템이다. 홈쇼핑 같은 규모가 작은 업자들의 경우에는 쇼핑몰만드는 사람이 PG와 연동하여 결제시스템을 ..
BPS, PPS, Active - StandBy BPS 초당 처리된 트래픽의 Byte or bit PPS packet per second 초당 처리된 패킷 수 Active - Active 서버 두 대를 모두 운영하는 방식을 active - active라고 부릅니다. 서버 두 대가 모두 활성화(active) 상태라는 개념이기 때문에 이해가 어렵진 않습니다. 두 서버 모두 일을 하다가 한쪽 서버에 문제가 발생하면 나머지 한쪽이 모든 트래픽을 처리합니다. 장애가 발생해도 시스템을 사용할 수 없는 시간인 다운타임(downtime)이 없습니다. 두 서버는 트래픽을 어떤 기준으로 나눠서 처리할까요? 이 질문에 대한 답을 로드밸런싱(load balancing)이라고 하며, L4 스위치 같은 하드웨어 장비가 로드밸런서 역할을 합니다. L4 스위치는 클라이언트로부터 ..
DDD 공부 : 마이크로서비스 마이크로서비스는 모노리스 시스템과 많이 비교된다. 옛날 방식이아닌 다른방식이라 생각하면 좀더 편할것 같다. 모노리스 시스템 - 애플리케이션이 한 덩어리로 구성 - 단일 프로세스 실행 - 한꺼번에 수정, 배포되어야 함 - 하나가 실패하면 모두 실패됨을 의미 당연한 이야기이지만 이러한 구조는 스케일 아웃을 하고싶어도 전체를 확장해야하는 이슈가 따른다. 예를들어 많은 기능중에 구매에대한 기능이 스케일아웃이 필요하다해도 모든 기능들에 대해서 확장을 해야한다. (효율적이지 못하다, 돈만 많으면 상관없다.) 마이크로서비스 - 서비스는 각기 독립적인 기능을 제공 - 서비스가 사용하는 저장소는 다른 서비스와 완벽히 격리됨 - 따라서 독립적으로 수정 가능하며 별도 배포 ,확장 가능 - 하나의 서비스 실패는 전체 실패가 ..
소프트웨어 장인정신 소프트웨어 장인 정신이란 무엇인가? 주니어개발자로서 앞으로 어떤식으로 업무를 임해야하는가? 해당 책은 TDD에 중요성에 대해서 언급하고있다. 간단하게 3~4시간 정도에 읽을 수 있는 내용이다. 기술적으로보단 프로그래머의 직업을 통해서 어떠한 마음가짐으로 일을 해왔고 그 성과에 대해서 초점을 맞춘다. 단순히 개발자로서의 기술이 궁금하다 테크닉이 무엇인가 이러한 내용보다는 마음가짐에 대해서 말하고 있다. 단순히 시간만 때우다 집에 가는 개발자가 될것이냐. 정말 개발을 좋아하고 그것을 자아성찰의 단계를 넘어서 시너지를 내는 방법에 대해서 설명한다. 글 내용중에 감명받았던거는 필자가 개발리더인 시절 PM과 업무적 다툼이 있던 단계에서 나온다. 사실 운영툴이니 개발 언어에 대해서는 개발자가 선택하는게 맞는데 그것..
리트코드: Longest Palindromic Substring /** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number} */ var findMedianSortedArrays = function(nums1, nums2) { return medianValue(nums1, nums2); }; const medianValue = (nums1, nums2) => { const len = nums1.length + nums2.length; const median = parseInt(len / 2); let index = -1; let i = 0; let j = 0; let tmp = 0; let result = 0; while(true) { if( len % 2 == 1 && index == medi..
리트코드: Median of Two Sorted Arrays 투포인터 문제이다. 중복이없는 가장 긴 문자열을 찾는 문제. 문자열주고 가장긴? 이런거나오면 그냥 투포인터생각하면 쉽다. /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { const array = new Array(200,false); const len = s.length; let front = 0; let rear = 0; let result = 0; let sum = 0; while(true) { const target = s.charCodeAt(rear); result = result > sum ? result : sum; if(rear == len||front> rear) break; ..
리트코드: 2. Add Two Numbers javascript 2년만에 PS를 다시 시작한다. 시작은 무난한 리코드 미디엄 문제.. ListNode 라는 릿코드에서 제공하는 자료구조를 이용해서 문제를 해결한다. ListNode는 단방향 연결리스트이다. 각각의 l1, l2의 reverse 값을 더한후 다시 reverse 하기 때문에 처음 각각의 노드들을 순회하면서 값을 더해주는 값 자체가 정답이된다. 주의할점은 각각의 노드에서 더이상 순회할게 없으면 0 이 될것이고, 각각의 노드에서 10이상의 값은 다음 node로 넘겨주면 된다. while 탈출 조건으로는 다음으로 넘길값이 없으면서 순회할 노드가 없는 경우 탈출하게 된다. /** * Definition for singly-linked list. * function ListNode(val, next) { * this...
스프링: BeanValidation BeanValidation 어노테이션으로 제공하는 기술표준 BeanValidation 이란 기술은 인터페이스만 제공한다. 일반적으로 하이버네이트 Valdation이 그 예시로 존재한다. @NotBlank @NotNull @Max @Min @Email @Range(min = 1000, max = 100000) .... 사용할려면 의존관계를 주입한다. spring-boot-starter-validation

반응형