본문 바로가기

ACC

(18)
[ACC 해커톤] 회고록 서론해커톤이 끝났다. 3주 동안 정말 많은 회의를 진행했고, 결국 주제였던 '대규모 메일 발송 시스템'은 구축할 수 있었다. 뭣 모르고 서버리스로 구현했지만, 열심히 한만큼 결국 성과를 낼 수 있었다. 아쉬웠던 점은 테스트의 부재와, 성능 저하에 대한 정확한 원인 규명을 못했다는 점, 그리고 미숙한 발표 정도가 있었다. 또한 내가 협업 경험이 부족해서 그런지 정말 협업을 못한다는 생각이 들었다.  8월 16일에 또 한번 해커톤을 진행하는데, 그때는 더 나은 모습으로 참가하겠다. 배운 점협업을 잘 하기누군가에게 설명하는 시간과 내가 혼자 개발하는 시간이 동일하다고 느껴져도 일단 설명하는 것이 맞다. 내가 가진 개발에 대한 이해도가 가장 높다 하더라도 결국 내가 보지 못하는 시야가 존재하기 때문이다.인프라 ..
[ACC 해커톤] 필수 사항 생각해보기 생각해볼 수 있는 보안 종류전송간 암호화SSECSEKMSCloudTrail 보안 취약점 찾기 전 구간 이동 시 탈취 우려유저가 API 요청 시 탈취 우려S3에 유저의 고객이 저장된 순간 이메일 탈취 우려DynamoDB 보안.해결책예빈님이 보내주신 자료를 읽어봤을 때, AWS가 제공해주는 보안 기능 설정만 잘 하면 문제가 없다. 사실 AWS가 제공하는 보안 기능 외에 추가로 해줘야 하는 것이 있으면 그건 AWS의 잘못이기 때문에 걱정할 이유가 없겠다.API Gateway 보안 관련다행히 API Gateway가 자체적으로 보안이 잘 되어 있다. (SSL/TLS 인증서, HTTPS 엔드포인트 제공 등)쓰로틀링을 지원해서 사용자 자체가 문제인 경우도 해결 가능프런트를 구현한다면 cognito를 사용해서 서비스 ..
[ACC 해커톤] 1주차 회고록 서론팀 주제는 이메일 대량 발송 시스템 설계가 나왔다. 첫 주차 과제인 아키텍처 초안 구상, 유저 시나리오 작성을 수행하기 위해 3회의 온라인 모임과 1회의 오프라인 모임을 가졌다. 오프라인 모임은 사당 스터디룸에서 진행됐고, 뱅크샐러드에 재직 중인 멘토님께 피드백을 받으면서 진행했다. 배운 것들아키텍처 초안은 개괄적으로 구성하자. 자세한 로직은 실제로 서비스를 사용한다는 생각으로 살을 붙여 나가는 것이 좋다. 처음부터 구체적으로 진행하다보니 자꾸 결과가 산으로 가게 되었다. 동작하는 것이 먼저이고, 최적화는 나중에 처리하도록 하자.유저는 람다의 트리거가 될 수 없다.유저와 람다 사이에 API Gateway를 배치해야 한다.특정 시간에 람다를 실행시키고 싶다면 EventBridge를 사용하자.EventB..
[디자인 패턴 스터디] 10. 프록시 패턴 프록시 패턴 프록시 서버: 클라이언트와 서버의 통신을 제어하는 대리 서버. 프록시 패턴: 특정 객체로의 접근을 제어하는 대리 객체를 제공하는 패턴. 프록시 패턴의 구조 프록시 패턴은 클라이언트 객체, 서비스 객체, 스텁(프록시 객체), 스켈레톤(서비스 객체쪽 보조 객체)로 이루어진다. 필요성 만약 기존의 모니터링 프로그램이 있었다고 할 때, 이를 원격으로 사용해야 한다면? 물론 서버 개념을 도입해서 아예 코드를 갈아엎을 수도 있겠지만 변경을 최소화할 수 있다. 또한 기존 프록시가 갖는 장점(원격 객체 접근 제어 등)을 프록시 패턴으로 얻을 수 있다. RMI 지금까지의 패턴은 전부 로컬에서 이루어졌지만, 프록시 패턴(원격 프록시)은 로컬에서만 이루어지지 않는다. 애초에 로컬에서 동작하는 것처럼 서버와 데이..
[디자인 패턴 스터디] 7. 어댑터 패턴과 퍼사드 패턴 어댑터 패턴 어댑터: 서로 다른 단자를 연결시켜주는 것. 어댑터 패턴: 특정 인터페이스 혹은 클래스를 타깃 인터페이스로 바꿔주는 것. 어댑터 패턴은 클라이언트, 어댑터와 어댑티, 타깃 인터페이스를 갖는다. 뭐가 어떤 역할인지는 예시로 보자. 어댑터 패턴 예시 1장에서 배운 오리 인터페이스에 칠면조 인터페이스를 적용시켜주고 싶은 경우. ///////////////////////////////////////// 오리 interface interface Duck { public void quack(); public void fly(); } ////////////////////////////////////////// 칠면조 interface interface Turkey { public void gobble()..
[디자인 패턴 스터디] 6. 커맨드 패턴
[디자인 패턴 스터디] 5. 싱글턴 패턴
[디자인 패턴 스터디] 4. 팩토리 패턴 세계적으로 유명한 피자 프랜차이즈의 피자 주문 시스템을 만든다고 생각해 보자. 가장 간단한 방법으로는 피자를 주문받는 클래스에서 피자의 종류를 확인하고, 그에 따라 피자를 만들고, 피자를 굽고 자르고 포장하는 식으로 코드를 작성하면 된다. 이렇게 만들면 당연히 문제가 있다. 지난번까지 배운 디자인 패턴에 위배가 되는 부분이 있다. 첫 번째로는 피자의 종류를 확인하고 피자를 만드는 과정에서 인터페이스에 맞춘 코딩이 아닌 구현을 이용하였다는 점이다. 두 번째로는 바뀌는 부분에 대해 캡슐화를 하지 않았다. 피자의 종류를 확인하는 과정은 아마도 ```if (type.equals("cheese pizza")```와 같이 조건문을 이용하여 구현할 수 있을 텐데 만약 피자의 종류가 새로 생기거나 삭제되는 일이 일어나..