실용주의 프그래머The Pragmatic Programmer,

자기계발서 읽는 느낌이다
다 맞는 말인데
머리에 남는건 별로 없는

  • 이미 하고 있는 것들
  • 하면 좋은 것들
  • 해야만 하는 것들
  • 할 수 없는 것들

이렇게 분류 해 볼 수 있을까

그냥 한번 읽어보고 넘어가면 될 것 같다
잠재의식 속에 남아있겠지

커맨드라인

find . -name '*.c' -newer Makefile -print
zip archive.zip *.h *.c
tar cvf archive.tar *.h *.c
find . -name '*.java' -mtime +7 -print
find . -name '*.java' -mtime +7 -print | xargs grep 'java.awt'
grep '^import '*.java |
  sed -e's/.*import *//' -e's/;.*$//' |
  sort -u > list

여기서 할 줄 아는게……압축하는거

인증(로긔인)서비스 – IAM/SSO 관련기술

완제품

  • Keycloak
    https://github.com/keycloak/keycloak
  • Gluu
    https://gluu.org/docs/gluu-server/4.1/installation-guide/install-docker/
  • OpenAM, OpenDJ
    https://github.com/OpenIdentityPlatform/OpenAM
  • JOSSO
    http://www.josso.org/
    https://github.com/atricore/josso2
  • LemonLDAP
    https://lemonldap-ng.org/welcome/
    https://github.com/LemonLDAPNG/lemonldap-ng-docker
  • Shibbolet ldp
    https://wiki.shibboleth.net/confluence/display/DEV/Source+Code+Access
    https://github.com/Unicon/shibboleth-idp-dockerized
  • 389 Directory Server
  • CAS https://github.com/apereo/cas
  • GLAuth
  • RazDC
  • FreeIPA
    https://www.freeipa.org/page/Main_Page
  • https://github.com/jasny/SSO
  • https://github.com/heipei/nginx-sso
  • https://github.com/IdentityServer
  • https://github.com/freeipa/freeipa
  • https://github.com/wso2/product-is
  • https://github.com/authelia/authelia
  • WSO2 identity server
  • AmazonCognito

라이브러리

  • CAS
  • https://github.com/spring-projects/spring-security-saml
  • https://github.com/spring-projects/spring-security-oauth
  • https://github.com/spring-projects/spring-security-kerberos
  • https://github.com/samitpal/simple-sso
  • https://github.com/go-oauth2/oauth2
  • Apache Shiro
  • https://github.com/jcasbin/shiro-casbin
  • pac4j
  • Apache CFX https://cxf.apache.org/
  • Apache Fortress
  • geronimo.apache.org
  • https://casbin.org/
  • https://github.com/casbin/jcasbin
  • https://github.com/casbin/casbin
  • https://github.com/OpenConext/Mujina
  • https://github.com/pac4j/spring-webmvc-pac4j
  • https://github.com/Neloop/jaclp

프로토콜

  • OAuth
  • JWT
  • SAML
  • Kerberos
  • Radius
    https://www.gnu.org/software/radius/
  • CAS
  • Session
  • BasicAuth
  • LDAP
  • OpenID

REF

  • https://www.getkisi.com/blog/authentication-protocols-overview
  • https://en.wikipedia.org/wiki/Authentication_protocol
  • https://www.geeksforgeeks.org/types-of-authentication-protocols
  • https://developer.okta.com/docs/concepts/saml
  • https://en.wikipedia.org/wiki/Single_sign-on
  • SAML : https://bcho.tistory.com/755
  • https://www.baeldung.com/spring-security-cas-sso

맨먼스 미신The Mythical Man-Month, 프레더릭 브룩스

내용

  • Prototype – 두 번째 시스템
    : 첫번째 시스템은 프로토타입이다
  • 1:10 업무효율
    : 같은 조직내에서 비슷한 급여를 받는 살마들 사이에도 업무능력 차이는 10배
  • 일정 늘어짐
    : 일정은 항상 늘어진다. 일정을 너무 루즈하게 잡은게 아니라면. 돌발상황에 대비해 조금 타이트하게 업무처리
  • 문서화
    : 워크북. 요즘은 위키를 주로 사용
  • 급하다고 많은 인원 투입
    : 의사소통 비용 증가
  • 소수정예
    : 큰 프로젝트 불가
  • 핵심개발인력과 보조인력 구조
    : 아키텍트와 모듈분할
  • 구체적인 마일스톤의 정의
  • 프로젝트 관리자는 의사 결정이 아닌 의사 소통

대상

오히려 개발자보다
한국에서의 특이직군인 기획자, PM
그리고 스타트업 대표, PO, 원청업체담당자가 봐야 할 책

읽고나서

소프트웨어 공학을 모를 때도
개발 업무를 하면서 맞딱뜨리게 되는 불편한 점들과 개선점을 생각했었는데
내가 찾아낸 최선의 방법의 핵심은 빠른 프로토타이핑과 작은 개선의 반복이었다.

이 책에서는 이것을 포함해서 그리고 더 다양한 상황에서의 대응법이 잘 정리가 되어 있다. 현업을 겪어보지 못했다면 그렇구나.. 하면서 감흥없이 넘어갔을 것 같다. 어차피 한번 겪어보고 다시 읽어야 됐었겠지
소프트웨어 개발 싸이클틀 겪어 본 사람이라면 이 책을 읽으면서 자기가 겪었던 문제점이 그대로 다 써 있다는데 놀라지 않을까

1975년 초판이라는데
아직도 그대로라니

Seed Data 종류 구분

테스트 및 동작 각 상황에 따라 필요한 데이터

Seed 종류 4가지

  • factory seed data: 데이터베이스 초기화 후 애플리케이션 실행에 필요한 데이터
  • scenario seed data: 각 기능별 시나리오에 따라 필요한 최소한의 데이터
    (필수: factory)
  • dummy seed data: 새 사용자 가입 또는 클라이언트 개발시 목록을 테스트하는 용도
    (필수: factory, 보조: unit, integration, uat)
  • replica seed data: 실제 운영서버 배포전 민감정보 제거된 실데이터 테스트
    (필수: factory)

각 환경에서 seed 데이터 사용

  • unit test: factory, scenario
  • dev_local: factory, scenario
  • dev_server: factory, scenario
  • dev_spot: integration 테스트용도로 임시로 띄우는 환경
    factory, scenario 두가지
  • uat: factory, scenario, dummy
  • stg: replica seed data
  • prd: factory seed data 서비스 초기에 사용, dummy seed data 테스트 계정에 사용

대강 정리 해 보니 factory, scenario는 테스트 시에는 계속 사용될 것 같고
dummy도 필요할 때 지속적으로 쓰일 것 같다

연동테스트는 dev_spot?과 stg에서 주로 이뤄질 것 같고
회원가입부터 테스트 코드가 작성되어 있으면 factory seed만 있어도 될듯?

SEED 설명

factory seed

보통 서비스 운영중에는 새로 넣을 필요가 없지만
1 납품하는 서비스
2 테스트 환경을 구성하는 경우
반복적으로 사용

거래소 개발인 경우라고 가정하면

  • 코인 메타데이터
    • BTC
    • ETH

integration test seed data

연동서비스시 필요한 데이터
자동화 테스트

Scenario

dummy 데이터와 비슷하기도 한데
integration 테스트를 회원가입 단계부터 차례로 진행할 경우 생기는 데이터와 같은 형태

dummy seed data

초기 사용자 가입시 또는 클라이언트 사용시
상황에 따라 추가할 수 있는 데이터

UI를 확인할 때 필요하다.

ex) SNS에서 친구 프로필 목록 화면인 경우

  • 이름
  • 전화번호
  • 이메일
  • 주소
  • 회사

replica seed data

실제 환경에서 테스트를 하는 경우

production -> 데이터 복제 후 민감정보 제거