본문 바로가기

전체 글35

MSA, Microservice Architecture 장단점 Microservice Architecture pattern 하나의 프로젝트가 너무 커지면 (monolith) 내부 복잡도가 증가하여 유지보수 생산성이 떨어지고 상호 종속성이 높기 때문에 테스팅을 해야하는 양이 증가하거나 버그가 증가하고 따라서 continuous deployment가 거의 불가능에 가깝다 한 곳의 버그나 메모리 누수가 서비스 전체에 영향을 미칠 가능성이 있다. 애자일 개발 방법론에 적용되지 않는다. Microservice Architecture로 하게 되면 복잡도의 문제를 해결할 수 있다. 각 팀이 좀 더 독립적으로 해당 기능에 집중해서 개발할 수 있다. 모듈 단위로 배포가 가능하다. A/B testing이 가능하고 UI 변화에 빠르게 대응할 수 있다. CI/CD가 가능해진다. 여러 개.. 2019. 4. 30.
객체 지향 설계 원칙 SOLID 로버트 마틴이 정리한 객체 지향 설계 원칙 SRP(The Single Responsibility Principle): 단일 책임 원칙 모든 클래스는 하나의 책임만을 가지며 클래스는 그 책임을 완전히 캡슐화 해야 한다. 어떤 클래스나 모듈은 변경하려는 단 하나의 이유만을 가져야 한다. 도메인 객체와 웹 객체를 함께 쓰거나, 영속성 객체와 함께 쓰게되면 애플리케이션이 단순할 때는 상관이 없지만, 다른 객체의 변화에 따라 도메인 객체가 함께 변화될 수 있다. OCP(The Open Closed Principle): 개방 폐쇄 원칙 객체는 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. '확장'은 기능 확장을 말하는 것. 의존성 주입을 통해서 기능을 확장. '변경'은 기존 로직의 변경을 말함. 불변객체를.. 2019. 4. 30.
화이트박스 vs 블랙박스 White Box는 사실 투명 박스에 가까운 것 같다. Black Box는 말그대로 안이 보이지 않는 박스. 두 단어는 테스트 방법론에서 자주 거론되는데, 컴포넌트를 지칭할 때도 쓰이는 것 같다. Black Box Test는 1. 내부 구조가 어떻게 되어있는지 확인할 수 없다. 2. 결과물 상태를 보고 요구사항이 충족하는지 확인한다. 3. 테스트 비용이 많이 든다. 왜냐면 어떠한 결과가 나올지 예측할 수 없기 때문에 test case를 많이 시도해보아야 하기 때문이다. White Box Test는 1. 소스코드 형태로 소프트웨어를 테스트한다. 2. 테스트 코드는 White Box Test에 해당하는 것 같다. Unit Testing, Integration Testing, System Testing이 해당.. 2019. 4. 17.
[Swift] Automatic Reference Counting 내용 요약 Official Document:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html ARC. Automatic Reference Counting. ARC는 class의 인스턴스가 할당될 때부터 메모리 상태를 추적한다. (struct, enum은 해당하지 않는다.) class 내의 property, constant, variables가 더 이상 사용되지 않을 때 메모리를 해제하게 된다. 평상시에는 별다른 조취를 취하지 않아도 메모리를 해제하게 되지만, 두 개 이상의 인스턴스가 서로를 참조하고 있을 경우(strong ref.. 2018. 3. 16.
[AWS RDS] Django + Postgresql + RDS 설정하기! 서비스를 하면서 DB의 트래픽이 많아지고 관리를 수월하게 하기 위해서 AWS RDS를 쓰곤 한다. EC2에서 사용할 때 보다 DB만 따로 스케일링이 가능하다거나 스냅샷을 원할 때마다 찍을 수 있다거나, 백업이 용이하다는 장점이 있기 때문이다. 이번에는 EC2 자체의 내장 Postgresql에서 RDS로 마이그레이션 해보았다. 1. RDS 등록 POSTGRESQL이 장고에서 가장 많이 호환이 된다고 해서 POSTGRESQL을 쓰고 있습니다만, POSTGRESQL 공식 문서가 좀 더 친절했으면 하는 바람입니다. FREE TIER로 하는 것을 체크하면 선택할 수 있는 사항들이 제한됩니다. 이러이러한 과정을 거치면 등록을 마치게 됩니다. 1~2분 기다리면 RDS 인스턴스의 상태가 available이 됩니다. 2.. 2017. 6. 9.
[Django] Gmail SMTP 보내기 이메일로 회원가입을 하거나 할 때, 해당 메일이 실제로 쓰이고 있고 해당 유저가 사용하고 있는지를 인증하기 위해서 인증 메일을 보내곤 한다. 이를 SendGrid나 AWS SES 등의 서비스를 통해서 할 수도 있지만, G-mail을 통해서 작은 규모의 웹사이트에서도 사용할 수 있다. 먼저, SMTP를 사용하기 위해서 지메일에서는 두 가지를 설정해줘야 한다.1. IMAP 사용함 설정 https://support.google.com/mail/answer/7126229?hl=ko&rd=3&visit_id=1-636281811566888160-3239280507#ts=16650182. 보안 수준이 낮은 앱 허용 https://support.google.com/accounts/answer/6010255두 가지 설.. 2017. 4. 19.