본문 바로가기

개발론

(18)
코드리뷰 기본 1. 코드리뷰 개요 코드리뷰 정의 및 목적 (컴파일, 테스팅을 위한 ) SW를 실행하지 않고 사람이 눈으로 코드를 개선해나가는 방법 제품 완성 단계가 아닌 개발 단계에서 소통하고 배움을 얻는 활동 개발자 역량 강화 , 수평문화, 협업 가능하게 해줌 코드리뷰 > 리팩토링 > 유닛테스트 -> 클린코드를 낳음 [코드리뷰의 기대효과] 유지보수성 증대로 결함 예방 > 코드가 쉽게 읽히나 > 변경하기 쉽게 되어있나 > 변경하기 좋은 코드 , 다른사람들이 이해하기 쉬움 ,개발의도가 표현됨 , 충분한 의미가 있는 클래스,함수, 컴포넌트
구글 리프레시 토큰이 안넘어 오는 이유! [출처 : https://doogle.link/%EA%B5%AC%EA%B8%80-%EC%95%84%EC%9D%B4%EB%94%94%EB%A1%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84%EC%A4%91-%EB%A6%AC%ED%94%84%EB%A0%88%EC%8B%9C-%ED%86%A0%ED%81%B0refresh-token-%EC%9D%B4/] 카카오 아이디 로그인을 PHP 에서 처리하려고 Hybridauth 패키지를 이용해 구현하고 있습니다. 카카오 아이디 로그인이 잘 되어서 이제 구글 로그인도 붙여보려고 테스트하고 있는데요. 이상하게 카카오와는 다르게 refresh token 이 안넘어오네요. debug 모드로 봐도 refresh_token 이 아예 항목이..
엘라스틱 서치에 대해서 엘라스틱 서치의 사용 검색을 위해서 단독으로 사용되기도 하지만 ELK 스택으로 함께 사용되곤 한다. LogStash Elasticsearch Kibana 이렇게이다. ELK 스택은 무엇일까? 로드밸런싱이나 MSA 등으로 분산되어서 저장되어있는 WAS의 로그들을 한곳으로 모으고 검색하기 수월하게 하기 위해서 사용된다. Logstash 로 로그를 모아서 엘라스틱서치로 보내고 ElasticSearch 는 집계하고 검색한다 Kibana는 ElasticSearch 로 검색된 데이터들을 시각화해서 보여준다. 엘라스틱 서치의 구조 우선 하나의 서버인 노드가 있다. 노드가 모여서 클러스터가 된다. 클러스터는 각각의 클러스터와 데이터 접근, 교환이 안되는 독립적인 공간이다. 엘라스틱 서치가 빠른 이유 RDBMS 에서의 ..
JWT 생성은 개인키로 / 검증은 공개키로 [ RS256는 RSA + SHA256을 줄임말로 대칭키방식인 HS256과 달리 공개키를 이용하는 대표적인 암호화방식인 RSA을 사용한것이다. 메세지를 SHA256 알고리즘으로 해싱 한뒤 private key로 암호화(서명)한다. public key를 발급받은 어떠한 주체는 앞서 암호화(서명)된 해싱값을 복호화 또는 서명을 검증하는 할수 있는 방식이다. public key는 이름 그대로 보안을 유지할 필요가 없기 때문에 ID 공급자는 이 public key를 메타 데이터 URL을 통해 쉽게 구할 수 있도록 제공한다. Signature 점(.)을 구분자로 해서 헤더와 페이로드를 합친 문자열을 서명한 값이다. 서명은 헤더의 alg에 정의된 알고리즘과 비밀 키를 이용해 성성하고 Base64 URL-Safe로 ..
커넥션풀이 뭘까 그리고 왜 사용할까 1. 커넥션 풀(DBCP)이란? 웹 컨테이너(WAS)가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가. 클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식을 말합니다. 2. 왜 사용하나? 위와 같이 자바에서 DB에 직접 연결해서 처리하는 경우(JDBC) 드라이버(Driver)를 로드하고 커넥션(connection) 객체를 받아와야 한다. 그러면 매번 사용자가 요청을 할 때마다 드라이버를 로드하고 커넥션 객체를 생성하여 연결하고 인증하고 종료하기 때문에 매우 비효율적이다. 이런 문제를 해결하기 위해서 커넥션풀(DBCP)를 사용한다. 3. 커넥션 풀(DBCP) 특징 웹 컨테이너(WAS..
MSA 에 대해서 가상 스타트업으로 알아보는 MSA이야기 가상의 스타트업을 가정합시다 10년 전 새롭게 amazon이라는 스타트업이 시작한다고 가정해 봅시다. 오픈마켓으로 개발자 3명이 서비스를 개발할 것입니다. 개발자가 로컬에서 톰캣(WAS)을 이용해 covenant.tistory.com covenant.tistory.com/176
CS스터디 - 3월1주차 [개발상식] 객체 지향 프로그래밍이 무엇인가?> ORM이 무엇인가 - 개념 세상의 개념(프로그래밍에 필요한 데이터)를 추상화시켜서 상태,행위(변수,메소드)를 가진 객체(클래스) 를 만든다. - 장점 1) 코드 재사용: 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있음. 2) 유지보수 : 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 있기 때문에 해당 부분만 수정하면 됨. 3) 클래스단위로 모듈화 : 대형 프로젝트처럼 여러명, 여러회사에서 개발이 필요할 시 업무 분담하기 쉽다. - 단점 1) 객체가 많으면 용량이 커질 수 있음 2) 설계시 많은 시간과 노력이 ..
도메인 주도 설계 ( Domain Driven Design ) 폭포수 모델링에서는 도메인을 기획하고자하는 기획자, 도메인에 훤한 분석가, 그걸 개발하려는 개발자 모두 각각의 위치에서 각자의 역할에 충실했다. 하지만, 이들은 서로만의 영역에서 사용되는 언어들을 주로 사용했고, 이들은 공통된 언어를 사용하지 않았다. 따라서 공통된 언어가 없으니 공통된 공유문서 등을 작성하기도 어려웠고, 이들이 고심하고 개선해서 만들어나가는 설계도나 개발 작품들이 고스란히 담기기 어려웠다. 이제는 모델링에 관심을 갖는 developer , 개발에 참여하는 Modler 들이 함께 존재하며 서로 공통된 언어를 사용하고, 공통된 용어를 사용하며 심지어는 코드 그 자체를 같은 프로젝트에 투입되었지만, 서로 다른 위치에 존재하는 직업군끼리 이해할 수 있게 하였다. 그렇게 지식의 공유를 활성화 시..